Skip to main content

Cross-platform Bilibili video/audio downloader built on yt-dlp + ffmpeg.

Project description

bili-dl

Cross-platform Bilibili downloader — a thin, fast wrapper around yt-dlp + ffmpeg.

CI Python 3.9+ PyPI License: MIT

Download Bilibili videos and audio at the best available quality (up to 1080p for non-premium accounts). Cross-platform, zero runtime dependencies, foobar2000-friendly audio output.

Features

  • Cookie-safe — drop cookies_all.txt next to the tool, and only the .bilibili.com entries are extracted. Other-site cookies are never parsed, stored, or sent anywhere.
  • Cookie-verified — probes Bilibili's nav API to confirm your session is actually logged in before downloading.
  • foobar2000-friendly audio — every produced M4A goes through a zero-loss ffmpeg -c copy remux (moov-first + ISOM container). No re-encode, no quality loss, instant playback in picky players.
  • Zero runtime deps — standard library only. If you have Python, pipx install bili-dl is all you need.

Install

bili-dl needs yt-dlp and ffmpeg on your PATH:

pip install -U yt-dlp       # or: winget / brew / pipx
# ffmpeg:
winget install ffmpeg        # Windows
brew install ffmpeg          # macOS
sudo apt install ffmpeg      # Debian/Ubuntu

Then:

pipx install bili-dl         # recommended
bili-dl -V                   # verify

Quick start

Cookies (one-time)

Bilibili requires a login cookie. Use any browser extension that exports cookies in Netscape format (Cookie-Editor, Get cookies.txt, etc.):

  1. Log in to bilibili.com

  2. Export All Cookies — the file should look like:

    # Netscape HTTP Cookie File
    .bilibili.com	TRUE	/	FALSE	0	SESSDATA	<session>
    .bilibili.com	TRUE	/	FALSE	0	bili_jct	<csrf>
    
  3. Save as cookies_all.txt in the cookie directory:

OS Cookie directory
Windows %APPDATA%\bili-dl
macOS ~/Library/Application Support/bili-dl
Linux ~/.config/bili-dl

Run bili-dl once — it extracts only .bilibili.com entries and reuses them thereafter. Override with --cookie-dir.

Download

bili-dl                                       # interactive REPL
bili-dl https://www.bilibili.com/video/BV...   # one-shot (video + audio)
bili-dl -a https://www.bilibili.com/video/BV...  # audio only
bili-dl -v https://www.bilibili.com/video/BV...  # video only
OS Videos Audio
Windows ~/Videos/bilibili_videos ~/Music/bilibili_audio
macOS ~/Movies/bilibili_videos ~/Music/bilibili_audio
Linux ~/Downloads/bilibili_videos ~/Downloads/bilibili_audio

Override with --output-dir / --audio-dir.

CLI reference

Flag Description
--all video + audio, merged MP4 + extracted M4A (default)
-v, --video video only (MP4)
-a, --audio audio only (M4A, faststart ISOM)
-k, --insecure skip TLS certificate verification
--proxy URL proxy for yt-dlp
-V, --version show version
-h, --help show help

Privacy

  • Only .bilibili.com cookie lines are kept; all others are discarded in memory — never written to disk or sent anywhere.
  • Network requests go only to api.bilibili.com (login probe) and the URLs you provide (via yt-dlp). No telemetry, no analytics.
  • cookies_bilibili.txt is created with a timestamped backup before any overwrite.

License

MIT. bili-dl is a wrapper; the actual downloading is done by yt-dlp (Unlicense) and ffmpeg (LGPL/GPL), which you must install separately.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bili_dl-0.1.4.tar.gz (24.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bili_dl-0.1.4-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

Details for the file bili_dl-0.1.4.tar.gz.

File metadata

  • Download URL: bili_dl-0.1.4.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bili_dl-0.1.4.tar.gz
Algorithm Hash digest
SHA256 3251d091fa9fb1820b72023c21bab17440cc1a4e0767cf58ec38e2ad1001e59e
MD5 4e3e52fe7bf779cf1b2b9de720c7f4f3
BLAKE2b-256 37fd48d7f3d00b919eb295c6d0bd4033347a30673650d11b78a59d3ae1eea283

See more details on using hashes here.

Provenance

The following attestation bundles were made for bili_dl-0.1.4.tar.gz:

Publisher: publish.yml on Echoziness/bili-dl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bili_dl-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: bili_dl-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 17.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for bili_dl-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 abf0ea0bfc74ece4585ee11f3f324f1ea7ca7d618f26f9208a05118a44df6c05
MD5 ae8f9637832993d5c7d2aaa347ab5b51
BLAKE2b-256 a8be0e3a7f85634b435dde533bf44bc569b43a71e364f72968ccda56055e68f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for bili_dl-0.1.4-py3-none-any.whl:

Publisher: publish.yml on Echoziness/bili-dl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page