Skip to content

AuYang261/BIT_yanhe_download

Repository files navigation

BIT_yanhe_download

介绍

本项目可下载延河课堂 (yanhekt.cn)中的课程视频。延河课堂是北京理工大学的在线课堂,提供了大量的课程视频,但是没有提供下载功能。本项目可以下载指定课程的摄像头和屏幕信号,包括无权限的课程。

欢迎提出建议和star!

使用:下载指定课程

点击此处下载并解压。

延河课堂 (yanhekt.cn)中找到想下载的课程,以链接为https://www.yanhekt.cn/course/40524 的课程为例,复制地址栏最后的五位编号40524。注意是课程列表的链接(以yanhekt.cn/course/五位编号开头),不是视频界面的链接(以yanhekt.cn/session/六位编号开头)。

image-20231018204208066

直观的交互方式

打开命令行(在release_downloader.zip解压的文件夹地址栏中搜索cmd),在命令行中输入gui.exe文件运行。直接双击运行可能会有字符对不齐的问题,导致难以识别文字。最好将命令行窗口最大化以免字符显示不全。

image-20240413001454717

首先输入你想下载的课程编号(40524),回车(小键盘的回车似乎不能用),获取课程视频列表:

image-20240413001734218

image-20240413002004628

按键盘上下键移动光标,按空格选择/取消选择,至少需要选择一个视频。选择完成后按回车确认。若想退出按q键即可。

确认后,选择要下载的信号,可选摄像头(即教室后的摄像头录像)或电脑屏幕(即教室电脑的屏幕信号),同样只要需要选择一个信号。选择完成后按回车确认,开始下载。按ctrl+c停止。

image-20240413002242979

下载完成的文件在output/目录下以课程名-video/screen格式命名的文件夹中。

image-20230926124922726

原始交互方式

双击运行main.exe文件,并输入你想下载的课程编号(40524)。输出课程视频列表:

image-20240413002857964

输入想下载的视频编号,用英文逗号(,)分隔,回车。接着输入数字选择下载摄像头信号还是下载屏幕信号,默认为摄像头信号。回车即开始下载:

image-20240413002857964

自动生成字幕

本项目提供自动生成字幕功能,使用openai的whisper项目及其模型在本地进行语音转文字生成字幕。

最好使用GPU运行,否则速度较慢,依赖见下文

下载字幕生成程序gen_caption,由于程序比较大,采用了分卷压缩发布。全部下载并解压,得到一个gen_caption.exe可执行文件,保存在上述release_downloader.zip解压的目录中,和保存视频的目录output/同级,如下所示:

image-20240409105228362

下载完视频后,双击运行gen_caption.exe(文件较大,需要等一会),输入数字选择视频,回车。再输入数字选择使用多大的模型,越往下效果越好,但所需时间也越长,默认使用base模型。第一次使用会自动下载模型(几百M),请耐心等待。如下所示:

image-20240409131033038

等待程序运行完成,生成的字幕文件为.srt格式,与视频文件在同级目录下,用支持字幕的播放器(如potplayer)打开视频即可看到带字幕的视频。

tips: 语音转文字所需的时间较长,可以先观看视频,字幕生成好了再重新打开视频享受字幕。使用GPU大约需要几分钟,不使用GPU则需要更长时间。

依赖

  • ffmpeg,已在Release中提供。若在Linux环境下运行,需手动安装ffmpeg:
sudo apt update
sudo apt install ffmpeg
  • 若使用GPU运行自动生成字幕功能,需要先安装cuda,安装方法见cuda安装

若想用python环境运行,需安装以下依赖

  • python,下载并安装

  • python第三方库requests。打开命令行,运行如下命令安装:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 安装语音转文字的依赖:(依赖于pytorch,若未安装pytorch,会自动安装,但是cpu版本。安装cuda版本的pytorch方法见pytorch官网。)
pip install -r requirements_whisper.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

注意

  • 需要关闭本机上的代理,否则会提示类似check_hostname requires server_hostname的报错信息。
  • 可以下载无权限的课程,只要知道课程链接(中的课程编号)就行。

打包(仅开发者需要)

如果想要运行时不依赖python环境,可将python程序打包成可执行文件。Release中已打包。

使用如下命令打包:

# 若未安装pyinstaller,运行以下命令安装
pip install pyinstaller
# 打包
pyinstaller -F main.py
pyinstaller -F gui.py
pyinstaller -F gen_caption.py

打包gen_caption.py时可能会失败,提示递归过深:

image-20240409095211597

解决方法参考这里,需要修改项目根目录下的gen_caption.spec配置文件,在文件开始处加上以下代码:

import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)

再使用如下命令打包:

pyinstaller --clean .\gen_caption.spec

打包完成后运行若出现Temp目录下的文件未找到:

image-20240409095831766

解决方法参考这个,将项目hooks目录下的hook-whisper.pyhook-zhconv.py文件复制到pyinstaller的hook目录下(通常在python根目录\Lib\site-packages\PyInstaller\hooks),。