Skip to content
This repository was archived by the owner on Aug 16, 2024. It is now read-only.

Commit 41fad0a

Browse files
committed
update
1 parent 1a71bee commit 41fad0a

23 files changed

+1189
-103
lines changed

.dockerignore

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
**/__pycache__/
2+
**/.venv/
3+
**/node_modules/
4+
**/.idea/
5+
backup/
6+
**/.DS_Store
7+
**/.gitignore
8+
**/.dockerignore
9+
**/requirements.txt
10+
Dockerfile
11+
compose.yaml
12+
README.md
13+
**/build.sh
14+
**/course.sh
15+
.git/
16+
records/
17+

.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
**/node_modules/
2+
__pycache__/
3+
/**/.DS_Store
4+
chromedriver
5+
.venv/
6+
.idea/
7+
backup/
8+
records/*
9+
!records/config.yaml
10+
!records/course.sh
11+
!records/course.ps1
12+
**/*.mov

Dockerfile

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Node Builder
2+
FROM node:alpine AS build
3+
WORKDIR /app/nodejs/
4+
COPY nodejs/package*.json ./
5+
RUN npm ci --registry=https://registry.npm.taobao.org
6+
7+
# Python Builder
8+
# FROM python:alpine AS python-builder
9+
RUN apk add --no-cache --update --repository http://mirrors.aliyun.com/alpine/v3.14/main/ \
10+
python3-dev \
11+
py3-pip \
12+
make \
13+
g++ \
14+
gcc \
15+
libc-dev \
16+
linux-headers \
17+
libffi-dev \
18+
openssl-dev
19+
WORKDIR /app/python/
20+
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pipenv
21+
COPY python/Pipfile python/Pipfile.lock ./
22+
RUN PIPENV_VENV_IN_PROJECT=1 pipenv --python /usr/bin/python3.10 && pipenv install
23+
24+
# Runtime
25+
FROM node:alpine
26+
RUN apk add --repository http://mirrors.aliyun.com/alpine/v3.14/main/ --no-cache python3
27+
COPY --from=build /app/nodejs/ /app/nodejs/
28+
COPY --from=build /app/python/ /app/python/
29+
COPY ./ /app/
30+
WORKDIR /app/nodejs/
31+
CMD index.js help

README.md

Lines changed: 84 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,88 @@
1-
# Xidian_DownloadVideo
2-
众所周知,在你电期末复习的重要手段就是看课程回放,但是由于回放平台的稀烂(指不能快进、容易卡等问题)
3-
而且到1202年了,还用Flash播放器
4-
故有了这个能够下载回放视频的脚本
5-
6-
# Usages
7-
首先安装相应的库
8-
``` python
9-
pip3 install -r requirements.txt
1+
# 西电课程录播小助手
2+
3+
## Prerequisites
4+
5+
你的电脑上需要安装 [Docker](https://www.docker.com/products/docker-desktop/)
6+
7+
如果你是 Windows 用户,还需要安装 [PowerShell 7](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows#install-powershell-using-winget-recommended):
8+
9+
```powershell
10+
winget install --id Microsoft.Powershell --source winget
11+
```
12+
13+
另外,为了最好的使用体验,建议你安装 `pasteboard`
14+
15+
如果你已经安装了 `scoop`,那么可以用 `scoop` 安装:
16+
17+
```powershell
18+
scoop bucket add extras
19+
scoop install pasteboard
20+
```
21+
22+
或者下载[压缩包](https://github.com/uzxmx/pasteboard/releases/),将解压文件放到环境变量 `Path` 下的目录中。
23+
24+
你可以通过在 PowerShell 中执行 `$Env:Path -split ';'` 命令来查看环境变量 `Path` 中的目录,或者执行 `$Env:Path += ';C:\Tools'` 来向环境变量 `Path` 中增加一个目录。
25+
26+
## How to use
27+
28+
首先在 [releases](https://github.com/Undefined443/Course/releases) 中下载需要的脚本文件,如果你是 Windows 用户,请下载 `course.ps1`,如果你是 `macOS/Linux` 用户,请下载 `course.sh`
29+
30+
将下载的文件放到一个新目录中,并在该目录中新建文件 `config.yaml`,在其中中填入你想记录的课程。例如:
31+
32+
```yml
33+
jy: 就业指导
34+
web: Web工程
35+
gj: 构件与中间件技术
36+
sf: 算法分析与设计
37+
spm: 软件过程与项目管理
38+
xt: 系统分析与设计
39+
rj: 软件体系结构
1040
```
11-
其次,你如果是第一次使用selenium,你需要为你的服务器配置chromedriver,具体请谷歌`selenium chrome环境配置`
1241
13-
接下来找到你要下载的课程的URL(如下图所示,每一节课都有一个URL)
14-
![(S@WHI4SF6A8 5OM_QE535X](https://user-images.githubusercontent.com/43775038/115207470-36822b00-a12e-11eb-972f-5bd3785cbdaa.png)
15-
最后在download_m3u8_video.py中修改你的Chrome路径地址和下载的课程的URL
42+
### 获取课程 JSON
43+
44+
1. 打开 Microsoft Edge 或 Google Chrome,进入超星学习通(西电智课),在侧边栏进入应用中心,在应用中心中打开录直播应用(学生)。
45+
46+
![step-1](assets/step-1.jpg)
47+
48+
> 如果你找不到录直播应用,点击右上角的头像,选择 `切换单位`,然后选择 `西电智课平台(学生,本科生)`
49+
50+
2. 在录直播应用中找到你想要记录的课程,点击查看回放。
51+
52+
![step-2](assets/step-2.jpg)
53+
54+
3. 在回放界面按下 <kbd>F12</kbd> 打开开发人员工具,在开发人员工具最上方的标签栏中选择 `网络`,然后在搜索框中输入 `index`。
55+
56+
![step-3](assets/step-3.jpg)
57+
58+
4. 单击唯一的搜索结果(如果没有就刷新一下页面),在打开的界面中选择 `负载` 标签,然后在下面的内容上单击鼠标右键,选择 `复制值`。
59+
60+
![step-4](assets/step-4.jpg)
61+
62+
### 记录课程
63+
64+
现在,打开终端,进入该目录,运行一些命令试试吧!
65+
66+
```sh
67+
./course sf 5-2 $(pbpaste) # 记录一节算法课,课程标记为 5-2-1,课程 JSON 通过命令替换从剪贴板读出
68+
69+
./course show web ls # 查看已记录的算法课,输出为课程的标记
70+
71+
./course show web 5-2 # 查看已记录的算法课中标记为 5-2 的所有课程的 URL
72+
73+
./course download web 5-2 # 下载算法课中标记为 5-2 的所有课程
74+
```
75+
76+
> 对于 macOS/Linux 用户,运行脚本时需加上后缀 `.sh`,即:`./course.sh`
77+
>
78+
> 每个记录的课程 URL 都必须有一个标记,如 `5-2-1`,表示这节课是第五周星期二的课程。所有在第五周星期二上的这门课的 URL 都会放到一个数组中,后面的 `1` 是这个课程 URL 在数组中的索引(数组索引从 1 开始)。在记录、查看和下载课程时可以省略索引,此时程序会在后台自动补充索引。
79+
80+
## Troubleshooting
81+
82+
### 第 3 步搜不到 index
83+
84+
超星录播同步很慢,可能是这门课的录播还没有生成出来,等几天再试试。最长可能需要两周。
1685

17-
![H7{ZI _TMO__`4J77C M4%5](https://user-images.githubusercontent.com/43775038/115208261-f3748780-a12e-11eb-9c4b-5436936bfe14.png)
86+
### 其他
1887

19-
运行download_m3u8_video.py就行了
88+
可能是网络问题,请挂代理或更换节点,出站规则选择规则判断。

assets/step-1.jpg

467 KB
Loading

assets/step-2.jpg

382 KB
Loading

assets/step-3.jpg

435 KB
Loading

assets/step-4.jpg

677 KB
Loading

build.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
docker image rm undefined443/course:amd64
2+
docker build --platform linux/amd64 -t undefined443/course:amd64 . && \
3+
docker push undefined443/course:amd64
4+
5+
docker image rm undefined443/course:arm64
6+
docker build --platform linux/arm64 -t undefined443/course:arm64 . && \
7+
docker push undefined443/course:arm64

download_m3u8_video.py

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)