| name | bilibili-api |
| description | Use the `bilibili-api-python` async library (400+ endpoints) for any Bilibili programmatic operation — videos, users, favorites, danmaku, live rooms, comments, search, uploads. This skill should be used whenever user asked for any Bilibili operation.
|
| version | 0.1.0 |
bilibili-api Skill
Overview
bilibili-api (package: bilibili-api-python, v17.4.1) is a comprehensive async Python wrapper for Bilibili's APIs with 400+ endpoints across 42 modules. All operations are async (asyncio-based) with a sync wrapper available. Supports three HTTP backends: curl_cffi, aiohttp, httpx.
- Source code:
<project_root>/bilibili_api/
- Documentation (Chinese):
references/docs/
- Module API docs:
references/docs/modules/*.md
- Usage examples:
references/docs/examples/*.md
Quick Start
Install the library and at least one HTTP backend:
uv pip install bilibili-api-python aiohttp
Minimal example (anonymous, no credentials needed):
import asyncio
from bilibili_api import video
async def main():
v = video.Video(bvid="BV1uv411q7Mv")
info = await v.get_info()
print(info["title"], info["stat"]["view"])
asyncio.run(main())
Or use the sync wrapper:
from bilibili_api import video, sync
v = video.Video(bvid="BV1uv411q7Mv")
info = sync(v.get_info())
print(info["title"])
See scripts/quickstart.py for a runnable example.
Credential Setup
Most read operations work without credentials. Write operations (like, comment, upload) and some read operations (user history, favorites) require authentication via the Credential class.
from bilibili_api import Credential
credential = Credential(
sessdata="...",
bili_jct="...",
buvid3="...",
buvid4="...",
dedeuserid="...",
ac_time_value="...",
)
Extract from browser: Open bilibili.com > F12 DevTools > Application (Chrome) or Storage (Firefox) > Cookies > .bilibili.com > copy SESSDATA, bili_jct, buvid3.
Programmatic login: Use login_v2 module for QR code, password, or SMS login.
Cookie refresh: Use credential.check_refresh() and credential.refresh() when cookies expire.
For complete details, consult references/credential-setup.md. To validate credentials, run scripts/credential_check.py.
Key Modules
| Category | Module | Description | Key Class |
|---|
| Content | video | Video info, actions, danmaku, download | Video |
| bangumi | Anime/drama series | Bangumi |
| article | Column articles | Article |
| audio | Audio tracks | Audio |
| manga | Manga/comics | Manga |
| cheese | Paid courses | CheeseList, CheeseVideo |
| opus | Image posts | Opus |
| note | Notes | Note |
| Social | user | User profiles, followers, videos | User |
| dynamic | User dynamics/feeds | Dynamic |
| comment | Comments on any resource | Comment |
| session | Private messages | (functions) |
| emoji | Emoji/sticker packs | (functions) |
| Discovery | search | Search videos/users/articles | (functions) |
| hot | Trending content | (functions) |
| rank | Rankings | (functions) |
| homepage | Homepage recommendations | (functions) |
| video_zone | Video category zones | (functions) |
| Live | live | Live rooms, danmaku, gifts | LiveRoom, LiveDanmaku |
| live_area | Live streaming categories | (functions) |
| Upload | video_uploader | Video upload workflow | VideoUploader |
| audio_uploader | Audio upload workflow | AudioUploader |
| Account | login_v2 | Login (QR/password/SMS) | QrCodeLogin |
| creative_center | Creator dashboard | (functions) |
| favorite_list | Favorites management | FavoriteList |
For the complete list of all 42 modules with classes and methods, consult references/api-modules.md.
Core Patterns
Async Usage
All API methods are async. Standard pattern:
import asyncio
from bilibili_api import video, Credential
async def main():
cred = Credential(sessdata="...", bili_jct="...")
v = video.Video(bvid="BVxxxxxxxx", credential=cred)
info = await v.get_info()
await v.like(True)
asyncio.run(main())
Sync Wrapper
For scripts that don't need async:
from bilibili_api import sync
result = sync(v.get_info())
Note: sync() cannot be called inside an already-running event loop.
Error Handling
from bilibili_api import ResponseCodeException, NetworkException
try:
info = await v.get_info()
except ResponseCodeException as e:
print(f"API error {e.code}: {e.msg}")
except NetworkException as e:
print(f"HTTP error {e.status}: {e.msg}")
Key exceptions: ResponseCodeException (API error code), NetworkException (HTTP error), ArgsException (bad parameters), CredentialNo*Exception (missing auth fields).
Event System (WebSocket)
Used by LiveDanmaku, VideoOnlineMonitor, uploaders:
from bilibili_api import live
room = live.LiveDanmaku(room_display_id=123456)
@room.on("DANMU_MSG")
async def on_danmaku(event):
print(event["data"]["info"][1])
await room.connect()
ID Conversion
from bilibili_api import aid2bvid, bvid2aid
bvid = aid2bvid(170001)
aid = bvid2aid("BV17x411w7KC")
Link Parsing
from bilibili_api import parse_link, get_real_url
real_url = await get_real_url("https://b23.tv/xxxxxxx")
resource = await parse_link(real_url)
For detailed patterns (download, danmaku, pagination, Picture class), consult references/common-patterns.md.
Configuration
from bilibili_api import request_settings, request_log, select_client
request_settings.set_proxy("http://127.0.0.1:7890")
request_settings.set_timeout(60.0)
select_client("curl_cffi")
request_log.set_on(True)
from bilibili_api import recalculate_wbi, refresh_buvid
await recalculate_wbi()
await refresh_buvid()
For full configuration details, consult references/configuration.md.
Reference Files
Detailed References
| File | Description |
|---|
references/credential-setup.md | Complete credential guide: browser extraction, programmatic login (QR/password/SMS), cookie refresh |
references/api-modules.md | All 42 modules with classes, key methods, and auth requirements |
references/configuration.md | Request settings, proxy, HTTP clients, logging, anti-spider measures |
references/common-patterns.md | Async/sync patterns, error handling, events, danmaku, download, pagination |
references/video-guide.md | Video module deep dive: info, actions, danmaku, download with quality selection |
references/user-guide.md | User module deep dive: profile, content listing, social actions, pagination |
references/live-guide.md | Live module deep dive: room info, WebSocket danmaku, gift tracking |
references/upload-guide.md | Video/audio upload workflows with event monitoring |
references/self-update.md | Skill self-update workflow: check for new releases, sync docs, update version info |
Utility Scripts
| File | Description |
|---|
scripts/quickstart.py | Minimal runnable example (anonymous video info retrieval) |
scripts/credential_check.py | Validate credentials from environment variables |
Source Documentation
For exhaustive API signatures, consult the project's built-in docs:
- Module API reference:
references/docs/modules/<module>.md
- Usage examples:
references/docs/examples/<module>.md