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 ~/.local/share/bili-dl/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.2.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.2-py3-none-any.whl (17.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: bili_dl-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 523563395e763999e1b926e3db3ca7020d9036600ef97f8c3ff5f477541e978c
MD5 7691e9e67685ded6721af54fcfb92079
BLAKE2b-256 1fa06a2701844965b05691412dcd10697bf077e60473cc40e9f69160376018fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for bili_dl-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: bili_dl-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 096d2e5469e24ac89cf3528e04589edaa442e943b42b698f02d03b792a721fa2
MD5 51803360145a4a22e1a46c086fc2f2b8
BLAKE2b-256 6bb7f1ca0e3a49f9854898724930661125812b9cd537da990ceb78d3c14e6ba9

See more details on using hashes here.

Provenance

The following attestation bundles were made for bili_dl-0.1.2-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