一个功能强大的视频下载工具,支持从多个视频网站自动下载视频,也可单独作为m3u8视频下载器。
- ✅ 多视频源支持:支持Jable.TV和Missav视频网站,后续将支持更多视频网站
- ✅ 智能页面解析:自动解析视频ID、标题、演员、HLS地址、封面等信息
- ✅ TS分片多线程下载:高效下载视频TS分片,支持断点续传
- ✅ 文件完整性校验:基于16位块大小检测,确保文件完整性
- ✅ AES解密支持:支持AES-128-CBC解密
- ✅ 自动合并TS文件:使用FFmpeg合并
- 🔄 断点续传:支持下载中断后从断点继续下载
- 🛡️ 代理支持:可配置代理服务器,绕过访问限制
- 📊 详细日志:完整的日志记录,便于调试和监控
- 🧩 模块化设计:易于扩展新的视频源和功能
- Python 3.8+
- FFmpeg
-
克隆项目到本地:
git clone <repository-url> cd JableTv-Crawler
-
安装依赖:
pip install -r requirements.txt
-
安装FFmpeg以支持视频合并:
# Ubuntu/Debian sudo apt install ffmpeg # macOS brew install ffmpeg # Windows # 从 https://ffmpeg.org/download.html 下载并添加到PATH
from src.Crawler import VideoCrawler
# 下载Missav视频
video_crawler = VideoCrawler(src='missav')
video_crawler.download_video('MUKA-003')
# 下载Jable视频(默认源)
video_crawler = VideoCrawler(src='jable')
video_crawler.download_video('GVH-778')项目提供了示例脚本,您也可以创建自己的脚本:
# 参考 example.py 和 example_sender.pycd JableTv-Crawler
conda activate <env-name>
python gui.pyproject-root/
├── src/ # 核心源代码
│ ├── Crawler.py # 视频爬虫调度器
│ ├── Downloader.py # TS下载/合并核心逻辑
│ ├── Manager.py # 下载管理器
│ ├── Bases/ # 基础类定义
│ │ ├── CrawlerBases.py # 爬虫基类
│ │ ├── VideoBases.py # 视频基类
│ │ └── PageParserBase.py # 页面解析器基类
│ ├── Crawlers/ # 具体爬虫实现
│ │ ├── JabVideoCrawler.py # Jable爬虫
│ │ └── MissavVideoCrawler.py # Missav爬虫
│ ├── PageParse/ # 页面解析模块
│ │ ├── JabPageParser/ # Jable页面解析
│ │ └── MissavPageParser/ # Missav页面解析
│ ├── Config/ # 配置管理
│ ├── utils/ # 工具函数
│ ├── encoder/ # 编码相关
│ └── decoder/ # 解码相关
├── Sender/ # 文件传输模块(Web界面)
│ ├── sender.py # Web服务主模块
│ ├── SenderConfig.py # 发送器配置
│ └── static/ # 前端资源
├── conf/ # 配置文件目录
│ ├── crawlers_conf.json # 爬虫配置
│ ├── headers.json # HTTP头配置
│ └── parameters.json # 参数配置
├── assets/ # 资源文件
│ ├── actress_id.json # 演员ID映射
│ ├── headers.json # 备用HTTP头
│ └── tag_mapping.json # 标签映射
├── downloads/ # 下载文件存储目录
├── logs/ # 日志目录
├── test_files/ # 测试文件
├── requirements.txt # Python依赖
├── example.py # 使用示例
└── example_sender.py # 发送器示例
编辑 conf/headers.json 配置请求头,避免被网站屏蔽:
{
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive"
}- 请遵守当地法律法规:仅下载您有权访问的视频内容
- 尊重版权:不要将下载的内容用于商业用途或非法分发
- 合理使用:避免对目标网站造成过大负载
- 网站结构变化:如果目标网站更新页面结构,可能需要更新解析逻辑
- 访问限制:某些网站可能有反爬虫机制,需要使用代理或调整请求频率
- 网络环境:下载速度受网络环境和目标服务器限制
- 下载失败:检查网络连接、代理配置和目标URL有效性
- 文件损坏:启用完整性校验,或尝试重新下载
- 解析错误:检查页面解析器是否与网站当前结构匹配
- 在
src/Crawlers/目录下创建新的爬虫类,继承VideoCrawlerBase - 在
src/PageParse/目录下创建对应的页面解析器
- 新的下载协议:在
src/Downloader.py中添加支持 - 新的文件格式:在
src/encoder/和src/decoder/中添加编解码器 - 监控和统计:扩展
src/utils/中的工具类
本项目采用 MIT 许可证。详见 LICENSE 文件。
欢迎提交 Issue 和 Pull Request 来改进本项目。
本项目仅用于学习和研究目的。使用者应对自己的行为负责,作者不对任何因使用本项目而产生的法律问题负责。