youtube-dl like command-line tool resolving & downloading media files from bilibili.
- Video quality selection
- Auto-merging video segments
- Premium account bangumi (with
-C
option)
WARNING using proxy with cookie may get your account banned since March 2019.
bilibili-get supports downloading video from following type of urls:
URL | Playlist | Example |
---|---|---|
User-uploaded Video | https://www.bilibili.com/video/av18182135 |
|
User-uploaded Video (multipart) | ✓ | https://www.bilibili.com/video/av1041170 |
User-uploaded Video (multipart) | https://www.bilibili.com/video/av1041170/index_5.html |
|
Movie Bangumi | https://www.bilibili.com/bangumi/play/ss12364/ |
|
TV Bangumi (A) | ✓ | https://bangumi.bilibili.com/anime/5796 |
Bangumi Episode (A) | https://bangumi.bilibili.com/anime/5786/play#100367 |
|
TV Bangumi (B) | ✓ | https://www.bilibili.com/bangumi/play/ss5796 |
Bangumi Episode (B1) | https://www.bilibili.com/bangumi/play/ep100611 |
|
Bangumi Episode (B2) | https://www.bilibili.com/bangumi/play/ss21769#173345 |
|
TV Bangumi (C) | ✓ | https://www.bilibili.com/bangumi/media/md8892/ |
URL Redirect | https://acg.tv/av106 |
Install via NPM:
npm install -g bilibili-get
bilibili-get uses aria2 and ffmpeg for downloading and video segment merging. They can be easily installed with a package manager.
For Homebrew users:
brew install ffmpeg aria2
For Linux/Windows users, make sure to have aria2 > 1.23.0 installed.
bilibili-get https://www.bilibili.com/video/av18182135
bilibili-get exposes similar interface with youtube-dl.
Usage: bilibili-get [options] <url>
Options:
-o, --output [pattern] set output pattern (default: av%(aid)s %(title)s%(#index&&"\(")s%(index)s%(#index&&"\)")s%(#index_title&&" ")s%(index_title)s.%(ext)s)
-f, --output-format [format] set merged output format [flv/mkv/mp4]
-q, --quality [value] set video quality (default: 0)
-l, --list-formats list available format/quality for video(s)
-x, --http-proxy [server] set HTTP proxy for metadata extractor
-C, --cookie [cookieString] set cookie string
-O, --download-options [key=value] set extra aria2c command-line options (default: )
-d, --dry-run run the program without any download
-s, --silent suppress video quality output
-V, --version output the version number
-h, --help output usage information
The -o
flag accepts an output template string in python string formatting method.
Besides typical string formatting options, bilibili-get supports JavaScript expressions replacement expressed by syntax like %(#1+1)d
.
And some of the variables are:
aid
- the XXXXXX in avXXXXXXcid
- media resource idext
- extension name of the output file (can be set by-f
option)title
- title of video or bangumiindex
- part# of a part in video or episode# of an episode in bangumiindex_title
- a part name or bangumi episode titleepisode_id
- id of a bangumi episodebangumi_id
- id of a bangumiquality
- quality id of resolved videoformat
- format name corresponding to the video quality
bilibili-get https://www.bilibili.com/video/av18182135 -l
bilibili-get https://www.bilibili.com/video/av18182135 -q 64 # 720P
bilibili-get https://www.bilibili.com/video/av18182135 -q 80 # 1080P
bilibili-get https://www.bilibili.com/video/av18182135 -q 112 # 1080P 4Kbps
bilibili-get https://www.bilibili.com/video/av18182135 -f mkv
bilibili-get -o 'av%(aid)s - %(title)s/%(index)s%(#index_title&&" - ")s%(index_title)s.%(ext)s' -f mkv https://www.bilibili.com/bangumi/play/ss1512
bilibili-get -C 'DedeUserID=XXXXXX; DedeUserID__ckMd5=b199851b45c91f32; sid=XXXXXXXX; SESSDATA=cf33becc%2C1241112410%2A332c1323;' -q 112 -f mkv https://www.bilibili.com/bangumi/play/ss1512
bilibili-get https://www.bilibili.com/video/av18182135 -O split=5 -O max-connection-per-server=5
bilibili-get https://www.bilibili.com/video/av18182135 -O max-download-limit=300K
(The MIT License)