/jable_downloader

download jable tv crawler tool 下载jable视频脚本爬虫工具 下載 jable視頻腳本爬蟲工具

Primary LanguagePythonApache License 2.0Apache-2.0

jable_downloader

download jable tv tool

PRs Welcome Scrutinizer code quality (GitHub/Bitbucket) Github_workflow GitHub Pipenv locked Python version

GitHub top language GitHub Scrutinizer build (GitHub/Bitbucket) GitHub code size in bytes GitHub Repo stars

Introduction

下载jable tv视频助手:heart_eyes:

支持功能:

  • 指定视频url下载到指定目录
  • 添加订阅某女星或者类别的视频,将该影星或类别的视频同步下载到本地
  • 支持断点续传,支持防止重复下载
  • 支持配置代理
  • 支持下载视频完毕后下载封面

TODO:

  • 不依赖第三方服务,使用selenium用本地浏览器driver抓网页(作为可选模式),欢迎PR

Usage

使用方法

为了绕过网站新的反爬机制,使用了第三方服务https://app.scrapingant.com/,你需要先到网站申请一个token,填到配置文件config.jsonsa_token段中 申请token方法

# 安装依赖
pip install -r requirements.txt

# 配置网络代理见Config小节(可选)

# 查看帮助
python main.py --help

# 指定视频url下载,指定多个url会按队列逐个下载(下面url替换为自己的url)
python main.py videos  https://jable.tv/videos/111111/  https://jable.tv/videos/222222/


# 添加对某类别的订阅,如添加`桜空もも`的订阅,添加订阅不会发起下载
python main.py subscription --add https://jable.tv/models/sakura-momo/

# 添加对多类别交集的订阅,如下添加`桜空もも的中文字幕`的订阅,添加订阅不会发起下载
python main.py subscription --add https://jable.tv/models/sakura-momo/ https://jable.tv/categories/chinese-subtitle/
# 查看当前订阅
python main.py subscription --get
# 当前共18个订阅,内容如下:
# 1       : 订阅名: ***           订阅链接: ***
# ......
# 18       : 订阅名: ***           订阅链接: ***

# 下载/同步所有订阅内容到本地(会跳过目标目录里的已下载内容)
python main.py subscription --sync-videos
# 按顺序下载/同步指定订阅号(3和2)的内容到本地(会跳过目标目录里的已下载内容)
# 订阅号上查看订阅时显示的数字编号,不指定--ids默认同步下载所有订阅
python main.py subscription --sync-videos --ids 3 2 


# h265编码压缩视频(可选)(体积可以减少为原1/3,实测1.8G的视频可以压缩到500M,耗时30分钟)
ffmpeg -i input.mp4 -c:v libx265 -vtag hvc1 -c:a copy output.mkv

使用帮助

  1. 下载完视频无法播放或者卡帧
    • 解决方案1: 更换视频播放器,推荐mpv播放器
    • 解决方案2: 使用ffmpeg编码ffmpeg -i input.mp4 -c:v libx264 -vtag hvc1 -c:a copy output.mp4

Config(Optional)

配置项(json文件)说明

配置文件提供程序自定义选项,并记录一些订阅信息,配置文件可选 读取配置文件的路径是执行命令的工作路径,文件名为config.json

  • downloadVideoCover: 是否下载封面,默认不下载
  • downloadInterval: 每个视频之间的下载间隔,默认0s
  • outputDir:下载的输出目录,默认当前工作目录
  • outputFileFormat: 下载文件的格式,默认是"title.mp4",即视频标题作为文件名,可选配置如下:
    • "title.mp4": 默认值,即视频标题作为文件名 (推荐)
    • "id.mp4": 番号作为文件名
    • "id/title.mp4": 番号目录/视频标题.mp4 (创建子目录,番号作为子目录名,标题作为文件名)
    • "id/id.mp4": 番号目录/番号.mp4 (创建子目录,番号作为子目录名,番号作为文件名)
  • proxies: 网络代理配置(需要同时配置http和https)
  • save_vpn_traffic: 节省vpn代理流量(默认不开启),开启后,从CDN下载视频的请求优先不使用代理,请求失败重试时再使用代理,由于存在失败重试切换代理,可能降低下载速度
  • subscriptions: 记录订阅的视频类别,支持models/tags等,建议通过命令行python main.py subscription --add添加
  • videoIdBlockList: 需要跳过的番号列表,例如["abc-123", "def-456"],默认为空
  • headers: 自定义请求头,一般不需要改动
  • sa_token: scrapingant服务的token,必须要填一个有效的token
  • sa_mode: scrapingant服务的模式,推荐设为browser,可选值如下
    • default: 默认模式,每次请求消耗1个credit,免费用户每月10000个credit
    • browser: 浏览器模式,每次请求消耗10个credit,能力更强

如下是订阅了桜空もも的中文字幕视频

{
    "downloadVideoCover": false,     
    "downloadInterval": 0,
    "outputDir": "./",
    "outputFileFormat": "",  
    "proxies": {
        "http": "http://127.0.0.1:7890",
        "https": "http://127.0.0.1:7890"
    },
    "save_vpn_traffic": false,
    "videoIdBlockList": [],
    "subscriptions": [
        [
            {
                "url": "https://jable.tv/models/sakura-momo/",
                "name": "桜空もも"
            },
            {
                "url": "https://jable.tv/categories/chinese-subtitle/",
                "name": "中文字幕"
            }
        ]
    ],
    "headers": {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0",
        "Referer": "https://jable.tv"
    },
    "sa_token": "paste your own token here",
    "sa_mode": "browser"
}

Reference

JableTVDownload