• Stars
    star
    930
  • Rank 48,791 (Top 1.0 %)
  • Language
    Python
  • Created over 4 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web video downloader for Bilibili, iQIYI, Tencent Video, MGTV and WeTV. 网站视频下载器,主要支持Bilibili、爱奇艺、腾讯视频、芒果TV、WeTV、愛奇藝台灣站。

webvideo-downloader

🚀 视频下载器,用于下载网站中可以在线播放的视频。


目录

功能介绍

主要支持网站

站点 URL 普通画质 VIP专属
哔哩哔哩(单P/多P) https://www.bilibili.com/
爱奇艺 https://www.iqiyi.com/
腾讯视频 https://v.qq.com/
芒果TV https://www.mgtv.com/
WeTV https://wetv.vip/
爱奇艺国际站 https://www.iq.com/

此外,备用的 CommonHlsDownloader 脚本支持绝大部分基于 HLS 流式视频的网站,如 LPL官网 等。

特性

  • 跨平台(Windows/Linux/Mac)
  • 多线程下载(单文件分段/多文件并行)
  • 字幕下载和集成(集成字幕的视频需使用支持字幕的播放器播放,如 PotPlayerVLC Player 等)

关于 VIP

本项目支持1080p蓝光画质、VIP专享、VIP点播、付费视频的下载,前提是你是VIP/用了券/付了费。

What you can watch determined what you can download.

你只能下载你或你的账号可以在线观看的视频,本项目没有VIP破解功能。

快速开始

安装

安装依赖程序

本项目基于PythonFFmpeg 和浏览器扩展 Violentmonkey/Tampermonkey 开发:

获取项目

直接下载压缩包,或使用 git clone:

git clone https://github.com/jaysonlong/webvideo-downloader.git
安装项目

浏览器安装以下基于 Violentmonkey/Tampermonkey 的脚本。直接点击以下链接即可安装:

安装 python 依赖包:

cd webvideo-downloader/downloader
pip install -r requirements.txt

(按需安装)浏览器安装广告拦截器:

对于某些网站,视频存在广告时,浏览器插件脚本会延迟到广告即将结束时才能提取到视频链接,安装拦截器可不用等待广告播放完毕

运行

本项目分为两部分,Violentmonkey 目录下的 javascript 脚本用于在浏览器中提取视频链接,Downloader 目录下的 python 脚本用于下载、合并视频。

首先执行 python 脚本:

python daemon.py

然后访问视频网站并点击某个视频,网页会自动弹出下载按钮,点击按钮即可下载。

示例链接:https://www.bilibili.com/video/BV1c741157Wb

bilibili

下载进度可在 python 脚本的命令窗口查看:

$ python daemon.py
Listening on port 18888 for clients...

Receive: {
    "fileName": "看小黄书会被处罚吗",
    "linksurl": "http://xxx",
    "type": "link"
}

Handle: "看小黄书会被处罚吗"

匹配到1段音频,1段视频,开始下载
-- dispatcher/downloadDash
正在下载 E:\Workspace\Github\webvideo-downloader\temp\看小黄书会被处罚吗.audio.m4s
分8段, 并行8线程下载
进度: [########################################] 100%    0.9/0.9MB  450KB/s 0s
正在下载 E:\Workspace\Github\webvideo-downloader\temp\看小黄书会被处罚吗.video.m4s
分8段, 并行8线程下载
进度: [########################################] 100%  11.2/11.2MB  5.2MB/s 2s
正在合并视频
Finish.

下载目录默认为项目根目录下的 videos 文件夹,可在 downloader/config.py 中配置。

python 脚本可选命令行参数:

$ python daemon.py -h
usage: daemon.py [-h] [-t:h N] [-t:f N] [-f N] [-p PORT] [-c] [-s] [-d] [-i]

optional arguments:
  -h, --help     show this help message and exit
  -t:h N         the thread count of hls download, default 8
  -t:f N         the thread count of fragments download, default 8
  -f N           the fragments count of each file, default 0 using the thread count
  -p PORT        the port that the backend server listens on, default 18888
  -c, --correct  correct the timestamp of hls video, merge fragments using binnary mode
  -s             if set, will save the temp files
  -d             debug mode, log more info and save the temp files (ignore -s)
  -i             interactive mode, get url and file name from the command line

工作原理

浏览器播放视频原理

用户登录生成session ——> 发送获取视频资源的HTTP请求 ——> 服务器基于session认证用户身份 ——> 认证通过后返回视频资源描述文件(如经典的m3u8文件,其中包含视频的所有分片的下载地址) ——> 浏览器解析描述文件,依次下载每个视频分片,并组装播放

本项目工作原理

1、暴力猴脚本:作用于浏览器,通过hook浏览器的HTTP请求(主要为ajax hook和jsonp hook),拦截服务器返回的视频资源描述文件,再将视频资源描述文件通过HTTP请求发送给下载器。

2、下载器:在本机启动一个Web服务器,接收暴力猴脚本发送过来的视频资源描述文件,并解析资源描述文件依次下载所有视频分片(模仿浏览器行为),最终合成单个视频。

更新日志

v2.0 - 2020-11-09

新增

  • 支持腾讯视频长分段下载(由用户上传的视频)
  • 支持爱奇艺国际站 VIP 下载、WeTV 无字幕下载
  • 增加 debug 模式

变更

  • 合并守护模式和交互模式为一个 python 脚本
  • 在爱奇艺国际站(iq.com)中禁用 WebAssembly 扩展,防止字幕加密

v1.6 - 2020-09-12

新增

  • 支持爱奇艺国际站视频下载
  • 支持多个字幕文件集成到视频中

v1.5 - 2020-09-01

新增

  • 支持 WeTV,愛奇藝台灣站视频下载
  • 支持部分网站字幕文件集成到视频中
  • 下载文件完整性检查

变更

  • MP4 文件 moov box 前置,便于网络传输

v1.4 - 2020-06-30

变更

  • 守护模式运行时端口复用,其监听模式同时支持 HTTP Server 和 WebSocket
  • 暴力猴脚本可自定义远程调用模式(HTTP 或 WebSocket)

v1.3 - 2020-06-27

变更

  • 暴力猴脚本重构 & 界面重写

v1.2 - 2020-06-18

新增

  • 支持爱奇艺 MPD 格式文件解析
  • 支持 MSE 视频流通过 WebSocket导出(实验性)
  • 新增两个暴力猴脚本:通用 hls 下载脚本和 MSE 视频流导出脚本(实验性)
  • 命令行参数支持

变更

  • 守护模式运行时的监听模式由 HTTP Server 更改为 WebSocket
  • 哔哩哔哩多P下载脚本合并到通用下载脚本中

v1.1 - 2020-05-29

新增

  • 支持基于 HTTP Server 以守护模式运行,浏览器点击链接直接调用后台下载

变更

  • 合并4个网站脚本为单个,便于安装和管理

v1.0 - 2020-05-26

新增

  • 支持哔哩哔哩、爱奇艺、腾讯视频、芒果TV视频下载(手动复制链接粘贴)