欢迎Star?!欢迎提Issue
本项目在 网协2023“十行代码”比赛 荣获特等奖? 指路?Github
下载延河课堂的录播视频
支持下载非选课班级的课程
支持多线程批量下载
支持下载电脑视频或教室录像
按课程名分类文件夹保存
2023-4-10 同步延河课堂接口更改
2023-4-20 更改js执行方式,无需安装nodejs
2023-11-12 签名效率优化,优化下载速度
理论可以跑满千兆有线网,可以根据电脑性能修改max_workers数量
2024-4-2 (?)更改signature实现方式
放弃js执行,不再使用js2py,提升兼容性 issue#5
现在时间sign和url后缀 都是py原生
2024-4-2 (?)更改交互方式,添加完整的命令行参数
支持一次下载全部课时,感谢@ZJC-GH同学的建议和pr
支持分别或同时下载VGA和Video
支持增量下载,自动跳过已下载文件
更改临时文件存储位置,放在temp
中
可以自定义输出文件夹位置
详见 #食用方法
优化ffmpeg输出
2024-4-3 (??)添加了GUI交互界面
基于PySimpleGUI4,可以跨平台运行
下载 Releases中的exe文件
建议下载带有ffmpeg版本,如yanhekt-x.x.x-gui-ffmpeg.exe
直接运行,略过后边的部分
https://pypi.org/project/yanhekt/
安装yanhekt
pip install yanhekt
确保命令行环境有ffmpeg
Windows下载后,添加环境变量即可
相关安装请自行搜索
如果最终视频没有合并,说明ffmpeg环境存在问题
下载/克隆本仓库或下载 Releases
安装python依赖包
pip install -r requirements.txt# (其实就一个requests)
确保命令行环境(或者代码文件夹内)有ffmpeg
Windows简单的方法:下载后拷贝到代码文件夹内
本仓库的release附带了ffmpeg(仅exe)
相关安装请自行搜索
如果最终视频没有合并,说明ffmpeg环境存在问题
开启方法
若release exe,直接打开
若使用pip安装
yanhekt-gui yanhekt gui
若源码运行
python main.py gui
开箱即食
扔进链接或者courseID(可Ctrl-C V)
获取课程信息
随意选择课时(Ctrl、Shift、鼠标拖拽都可多选)
设置一些参数,比如要下载什么视频
开下!
注意:如果使用本地源代码安装,请将本节中的yanhekt
或yanhekt-cli
替换为python main.py
获取课程ID
在课程详情页,注意不是视频播放页,如https://www.yanhekt.cn/course/11111
,
从url中获得课程id,如11111
命令行参数
--skip
,跳过已下载,仅下载新上传的视频
# 例:定期更新课程全部视频yanhekt 11111 --all --skip
--dual
,同时下载电脑录屏和教室视频**(默认)**
--vga
,仅下载电脑录屏
--video
,仅下载教室视频
# 例:下载第3-8节课,仅下载电脑录屏yanhekt 11111 --range 3 9 --vga
--all
,下载全部课时
--list 0 2 4
,下载选定的课时列表
--range 3 5
,下载一个范围内的课时
# 例:下载第3-8节课yanhekt 11111 --range 3 9 yanhekt 11111 -L 3 9
,直接给出
# 例:查看课程信息及视频列表yanhekt 11111
指定课程的ID
选择下载的课时序号
选择下载的视频类型
增量下载
更多高级用法请参考命令行提示
!yanhekt --help# usage: main.py [-h] [-A | -L i [i ...] | -R i i] [-D | -G | -V] [-S] [--dir DIR] [--max-workers num] courseID# GDDG08/YanHeKT_Downloader# positional arguments:# courseID Course ID of YanHeKT# options:# -h, --help show this help message and exit# Lesson Selection:# IF NONE, PRINT LESSON LIST AND EXIT.# -A, --all Download all lessons# -L i [i ...], --list i [i ...]# Select of lesson index (e.g., --list 1 2 4)# -R i i, --range i i Select range of lessons (e.g., --range 3 5 for [3,5))# Video Type:# -D, --dual Download both VGA(PC) and Video (default)# -G, --vga Download VGA(PC) only# -V, --video Download Video only# Configurations:# -S, --skip Skip existing files# --dir DIR Output directory (e.g., --dir ./output)# --max-workers num Max workers for downloading (default: 32)
ENJOY !
仍处于初期开发阶段,欢迎提功能需求和PR
from yanhekt import YanHeKTyanhekt = YanHeKT(25555, _all=True, _dual=True, _skip=True, _dir='./')yanhekt.download()
@ZJC-GH 同学添加了批量下载功能
有需要的同学可以到这个仓库 release中下载使用
目前已合并到dev分支
计划使用argparse
完善命令行参数,优化下交互体验(2.2.0已实现)
(超大饼)在参数写完后整个简单的gui
M3u8Download