JableTVDownload
该项目 fork 自 hcjohn463 的 JableTVDownloader,在原项目基础上增加了下载代理配置、下载队列、WebUI、浏览器 UA 配置、Webhook、防机器人认证检测等功能。
另外基于Webhook功能,可以结合iOS系统的快捷指令,实现手机触发下载任务的功能。
🚀 快速开始(推荐)
使用 Docker Compose 一键启动完整的 Web UI + 下载器服务,适合家庭 NAS 或服务器部署。
前置要求
启动方式
git clone https://github.com/Road-tech/JableTVDownload.git
cd JableTVDownload
cp docker-compose.full.yml docker-compose.yml
vi docker-compose.yml
docker compose up -d
|
🐳 docker-compose配置说明(docker-compose.full.yml)
services: webui: ports: - "8080:8080" environment: - DOWNLOADER_API=http://downloader:5000 volumes: - ./logs:/logs downloader: ports: - "5000:5000" environment: - SERVER=true - HOST=0.0.0.0 - PORT=5000 - LOG_DIR=/logs volumes: - ./downloads:/downloads - ./downloader/config.json:/app/config.json - ./logs:/logs
networks: jable-network: driver: bridge
|
📋 下载器配置文件 (config.json)
可以看到上面的docker-compose.full.yml挂载了config.json,这个JSON配置文件管理下载器的常用设置,无需每次输入参数。当然你可以不用修改config.json,直接通过WebUI进行配置。
{ "proxy": { "enabled": false, "url": "" }, "browser": { "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "headless": true, "disable_images": false, "page_load_timeout": 30, "implicit_wait": 10 }, "download": { "cover": true, "encode": true, "quality": 1 } }
|
🌐 浏览器访问WebUI
启动成功后,通过浏览器访问WebUI:
📂 项目结构
JableTVDownload/ ├── docker-compose.full.yml ├── README.md ├── start.sh ├── start.bat ├── downloader/ │ ├── Dockerfile │ ├── config.json │ ├── main.py │ ├── crawler.py │ ├── download.py │ ├── merge.py │ ├── encode.py │ ├── cover.py │ ├── webhook_server.py │ └── requirements.txt ├── webui/ │ ├── Dockerfile.webui │ ├── web_ui.py │ ├── templates/ │ └── requirements_webui.txt └── img/
|
项目功能
🎨 WebUI
提供直观的网页界面(预览界面),无需编写代码或使用终端即可使用所有功能,功能特性如下:
1. 添加下载任务
- 支持完整 URL(如:
https://jable.tv/videos/snxx-XXX/)
- 支持仅输入番号(如:
snxx-XXX),系统自动补全
- 支持批量添加(每行输入一个)
- 任务自动加入下载队列
2. 下载队列管理
- 任务按添加顺序排队
- 默认同时下载 1 个任务
- 可配置同时下载数量(1-8)
3. 实时监控
4. 配置管理
- 代理设置(启用/停用、代理地址)
- 浏览器设置(无头模式、禁用图片加载、自定义 UA)
- 下载设置(封面下载、转码、转码质量)
🌐 Webhook API 服务
支持通过 HTTP API 调用下载任务,方便与其他系统集成。
API 端点
| 端点 |
方法 |
说明 |
/health |
GET |
健康检查 |
/api/download |
POST |
添加下载任务 |
/api/download/batch |
POST |
批量添加下载任务 |
/api/config |
GET |
获取当前配置 |
/api/config |
PUT/POST |
更新配置 |
/api/tasks |
GET |
获取下载任务列表 |
/api/tasks/<task_id> |
DELETE |
删除指定任务 |
/api/tasks/<task_id>/stop |
POST |
停止正在下载的任务 |
/api/tasks |
DELETE |
清除已完成的任务 |
/api/progress |
GET |
获取当前下载进度 |
/api/queue/status |
GET |
获取队列状态 |
API 使用示例
1. 添加下载任务
curl -X POST http://localhost:5000/api/download \ -H "Content-Type: application/json" \ -d '{"url": "https://jable.tv/videos/xxx/"}'
|
可选参数:
{ "url": "https://jable.tv/videos/xxx/", "cover": true, "encode": true, "quality": 1, "proxy": "http://proxy.example.com:8080" }
|
2. 获取当前配置
curl http://localhost:5000/api/config
|
3. 更新配置
curl -X PUT http://localhost:5000/api/config \ -H "Content-Type: application/json" \ -d '{ "proxy": { "enabled": true, "url": "http://proxy.example.com:8080" }, "download": { "cover": false, "quality": 2 } }'
|
4. 查看下载任务
curl http://localhost:5000/api/tasks
curl http://localhost:5000/api/tasks?status=downloading
|
5. 停止下载任务
curl -X POST http://localhost:5000/api/tasks/1/stop
|
6. 删除指定任务
curl -X DELETE http://localhost:5000/api/tasks/1
|
7. 清除已完成的任务
curl -X DELETE http://localhost:5000/api/tasks?filter=completed
curl -X DELETE http://localhost:5000/api/tasks?filter=all
|
8. 获取下载进度
curl http://localhost:5000/api/progress
curl http://localhost:5000/api/progress?task_id=1
|
🐳 通过Docker的容器直接下载
如果不喜欢WebUI的方式,也可以直接创建容器,把视频下载到指定目录。
交互模式
docker build -t jable-downloader .
docker run -it -v D:\downloads:/downloads jable-downloader
|
基于配置文件直接下载视频
将本地的 config.json 挂载到容器内:
docker run -it \ -v ./downloads:/downloads \ -v ./config.json:/app/config.json \ -e URL="https://jable.tv/videos/xxx/" \ jable-downloader
|
基于环境变量配置下载视频
docker run -it \ -v ./downloads:/downloads \ -v ./config.json:/app/config.json \ -e URL="https://jable.tv/videos/xxx/" \ -e PROXY="http://proxy.example.com:8080" \ -e ENABLE_PROXY="true" \ -e COVER="False" \ -e QUALITY="2" \ jable-downloader
|
环境变量列表
| 环境变量 |
说明 |
SERVER |
启动 Webhook 服务器 (true) |
HOST |
服务器监听地址 (默认: 0.0.0.0) |
PORT |
服务器端口 (默认: 5000) |
URL |
视频网址 |
RANDOM |
下载随机热门视频 (true/false) |
ALL_URLS |
演员页网址,下载所有视频 |
CONFIG |
自定义配置文件路径(容器内) |
PROXY |
代理地址 |
ENABLE_PROXY |
启用代理 (true) |
DISABLE_PROXY |
停用代理 (true) |
COVER |
是否下载封面 (true/false) |
ENCODE |
是否转码 (true/false) |
QUALITY |
转码质量 (1/2/3) |
直接运行
直接运行程序、不启动docker容器
⌨️ 命令行参数
python main.py -h
python main.py --server python main.py --server --host 0.0.0.0 --port 5000
python main.py --random True python main.py --url <网址> python main.py --all-urls <演员页>
python main.py --config my_config.json
python main.py --enable-proxy python main.py --disable-proxy python main.py --proxy "http://proxy.example.com:8080"
python main.py --cover False python main.py --encode False python main.py --quality 2
|
参数优先级
命令行参数优先级高于配置文件,例如:
python main.py --url <网址> --cover False
|
🛠️ 维护命令
docker compose down
docker compose build --no-cache
docker compose restart
docker compose logs -f webui docker compose logs -f downloader
docker image prune -f
|
📜 更新日志
| 版本 |
日期 |
内容 |
| v3.0 |
2026/06/01 |
🌟 新增完整 Web UI 图形化界面 |
|
|
🎨 支持直接输入番号自动补全 URL |
|
|
📊 实时显示任务进度和日志 |
|
|
⚙️ Web UI 配置管理功能 |
| v2.3 |
2026/05/30 |
🛡️ 新增浏览器配置项(UA、超时等) |
|
|
🚫 新增机器人验证检测与提示功能 |
| v2.2 |
2026/05/30 |
🌐 新增 Webhook API 服务 |
|
|
📡 支持 HTTP API 新建下载任务、更新设置 |
| v2.1 |
2026/05/30 |
⚙️ 新增 config.json 配置文件系统 |
|
|
🚀 支持通过配置文件管理代理、封面下载、转码等选项 |
| v2.0 |
2026/03/15 |
🐳 支持 Docker 容器化部署 |
|
|
☸️ K8s(Job/PVC/ConfigMap)支持 |
|
|
📊 下载与合成加入 tqdm 实时进度条 |
|
|
🚀 优化合成与转码速度 |
| v1.11 |
2023/04/19 |
🦕 新增 ffmpeg 自动转码 |
| v1.10 |
2023/04/19 |
🏹 兼容 Ubuntu Server |
| v1.9 |
2023/04/15 |
🦅 下载演员所有相关视频 |
| v1.8 |
2022/01/25 |
🚗 下载结束后自动抓取封面 |
| v1.7 |
2021/06/04 |
🐶 更改 m3u8 获取方法(正则表达式) |
| v1.6 |
2021/05/28 |
🌏 支持 Unix 系统(Mac、Linux 等) |
| v1.5 |
2021/05/27 |
🍎 更新爬虫网页方法 |
| v1.4 |
2021/05/20 |
🌳 修改编码问题 |
| v1.3 |
2021/05/06 |
🌈 增加下载进度提示、修改 Crypto 问题 |
| v1.2 |
2021/05/05 |
⭐ 更新稳定版本 |