[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10293":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},10293,"bilibili-api","Nemo2011\u002Fbilibili-api","Nemo2011","哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。原仓库地址：https:\u002F\u002Fgithub.com\u002FMoyuScript\u002Fbilibili-api","https:\u002F\u002Fnemo2011.github.io\u002Fbilibili-api\u002F",null,"Python",4078,595,15,140,0,3,39,161,23,95.83,"GNU General Public License v3.0",false,"main",true,[27,28,5,29,30],"api","bilibili","python","spider","2026-06-12 04:00:49","![bilibili-api logo](https:\u002F\u002Fraw.githubusercontent.com\u002FNemo2011\u002Fbilibili-api\u002Fmain\u002Fdesign\u002Flogo.png)\n\n\u003Cdiv align=\"center\">\n\n# bilibili-api\n\n[![API 数量](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI%20数量-400+-blue)][api.json]\n[![LICENSE](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLICENSE-GPLv3+-red)][LICENSE]\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.9+-blue)](https:\u002F\u002Fwww.python.org)\n[![Stable Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fbilibili-api-python?label=stable)][pypi]\n[![Pre-release Version](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FNemo2011\u002Fbilibili-api?label=pre-release&include_prereleases&sort=semver)][pypi-dev]\n[![STARS](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fnemo2011\u002Fbilibili-api?color=yellow&label=Github%20Stars)][stargazers]\n[![Testing](https:\u002F\u002Fgithub.com\u002FNemo2011\u002Fbilibili-api\u002Factions\u002Fworkflows\u002Ftesting.yml\u002Fbadge.svg?branch=dev)](https:\u002F\u002Fgithub.com\u002FNemo2011\u002Fbilibili-api\u002Factions\u002Fworkflows\u002Ftesting.yml)\n\n**:warning: 接口可能改动，请及时更新最新版 [![Stable Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fbilibili-api-python?label=stable)][pypi]**\n\n\u003C\u002Fdiv>\n\n**注意事项：使用此模块时请仅用于学习和测试，禁止用于非法用途及其他恶劣的社区行为如：恶意刷屏、辱骂黄暴、各种形式的滥用等，违规此模块许可证 `GNU General Public License Version 3` 及此条注意事项而产生的任何后果自负，模块的所有贡献者不负任何责任。**\n\n开发文档: [bilibili_api 开发文档][docs] ([GitHub][docs-github])\n\n原仓库地址：[https:\u002F\u002Fgithub.com\u002FMoyuScript\u002Fbilibili-api](https:\u002F\u002Fgithub.com\u002FMoyuScript\u002Fbilibili-api) (*现已被删除)\n\nGithub 仓库：[https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api](https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api)\n\n> 模块最早由 @MoyuScript 于 2020 年创建，于 2022 年宣布停止维护。本仓库是原仓库 fork，遵循 `GNU General Public License Version 3`。在此感谢早期的众多模块贡献者与 @MoyuScript 对新仓库的支持。\n> 见 `MoyuScript\u002Fbilibili-api` 的 [第一条 commit (2020.01.27)](https:\u002F\u002Fgithub.com\u002FNemo2011\u002Fbilibili-api\u002Fcommit\u002F8dc3f9a05fa28ed9b060cafa6d5c23131a28a113)与 [最后一条 commit (2022.01.17)](https:\u002F\u002Fgithub.com\u002FNemo2011\u002Fbilibili-api\u002Fcommit\u002Fdc518016c7649be2a135ccb8badb091712754a3d)。\n\n# 简介\n\n这是一个用 Python 写的调用 [Bilibili](https:\u002F\u002Fwww.bilibili.com) 各种 API 的库，\n范围涵盖视频、音频、直播、动态、专栏、用户、番剧等[[1]](#脚注)。\n\n## 特色\n\n- 范围涵盖广，基本覆盖常用的爬虫，操作。\n- 可使用代理，绕过 b 站风控策略。\n- 全面支持 BV 号（bvid），同时也兼容 AV 号（aid）。\n- 调用简便，函数命名易懂，代码注释详细。\n- 不仅仅是官方提供的 API！还附加：AV 号与 BV 号互转[[2]](#脚注)、连接直播弹幕 Websocket 服务器、视频弹幕反查、下载弹幕、字幕文件[[3]](#脚注)、专栏内容爬取、cookies 刷新等[[4]](#脚注)。\n- 支持采用各种手段避免触发反爬虫风控[[5]](#脚注)。\n- **全部是异步操作**。\n- 默认支持 `aiohttp` \u002F `httpx` \u002F `curl_cffi`。\n\n# 快速上手\n\n首先使用以下指令安装本模块：\n\n```\n# 主版本\n$ pip3 install bilibili-api-python\n\n# 开发版本\n$ pip3 install bilibili-api-dev\n\n# 最新修改会在 dev 分支\n$ pip3 install git+https:\u002F\u002Fgithub.com\u002FNemo2011\u002Fbilibili-api.git@dev\n```\n\n然后需要**自行安装**一个支持异步的第三方请求库，如 `aiohttp` \u002F `httpx` \u002F `curl_cffi`。\n\n```\n# aiohttp\n$ pip3 install aiohttp\n\n# httpx\n$ pip3 install httpx\n\n# curl_cffi\n$ pip3 install \"curl_cffi\"\n```\n\n接下来我们来获取视频的播放量等信息：\n\n```python\nimport asyncio\nfrom bilibili_api import video\n\n\nasync def main() -> None:\n    # 实例化 Video 类\n    v = video.Video(bvid=\"BV1uv411q7Mv\")\n    # 获取信息\n    info = await v.get_info()\n    # 打印信息\n    print(info)\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n\n```\n\n输出（已格式化，已省略部分）：\n\n```json\n{\n    \"bvid\": \"BV1uv411q7Mv\",\n    \"aid\": 243922477,\n    \"videos\": 1,\n    \"tid\": 17,\n    \"tname\": \"单机游戏\",\n    \"copyright\": 1,\n    \"pic\": \"http:\u002F\u002Fi2.hdslb.com\u002Fbfs\u002Farchive\u002F82e52df9d0221836c260c82f2890e3761a46716b.jpg\",\n    \"title\": \"爆肝９８小时！在 MC 中还原糖调小镇\",\n    \"pubdate\": 1595203214,\n    \"ctime\": 1595168654,\n    ...and more\n}\n```\n\n如何给这个视频点赞？我们需要登录自己的账号。\n\n这里设计是传入一个 Credential 类，获取所需的信息参照：[获取 Credential 类所需信息][get-credential]\n\n下面的代码将会给视频点赞\n\n```python\nimport asyncio\nfrom bilibili_api import video, Credential\n\nasync def main() -> None:\n    # 实例化 Credential 类\n    credential = Credential(sessdata=SESSDATA, bili_jct=BILI_JCT, buvid3=BUVID3)\n    # 实例化 Video 类\n    v = video.Video(bvid=\"BVxxxxxxxx\", credential=credential)\n    info = await v.get_info()\n    print(info)\n    # 给视频点赞\n    await v.like(True)\n\nif __name__ == '__main__':\n    asyncio.run(main())\n```\n\n如果没有报错，就代表调用 API 成功，你可以到视频页面确认是不是调用成功了。\n\n> **Warning** 注意，请不要泄露这两个值给他人，否则你的账号将可能遭受盗号的风险！\n\n# 异步迁移\n\n由于从 v5 版本开始，基本全部改为异步，如果你不会异步，可以参考 [asyncio](https:\u002F\u002Fdocs.python.org\u002Fzh-cn\u002F3\u002Flibrary\u002Fasyncio.html)\n\n异步可以进行并发请求，性能更高，不过如果请求过快仍然会导致被屏蔽。\n\n总的来说，异步比同步更有优势，所以不会的话可以去学一下，会发现新天地（误\n\n如果你仍然想继续使用同步代码，请参考 [同步执行异步代码](https:\u002F\u002Fnemo2011.github.io\u002Fbilibili-api\u002F#\u002Fsync-executor)\n\n# 模块使用的请求库\n\n模块在允许的条件下，按照 `curl_cffi` `aiohttp` `httpx` 的优先级选择第三方请求库。\n\n如果想要指定请求库，可以利用 `select_client` 进行切换。\n\n``` python\nfrom bilibili_api import select_client\n\nselect_client(\"curl_cffi\") # 选择 curl_cffi，支持伪装浏览器的 TLS \u002F JA3 \u002F Fingerprint\nselect_client(\"aiohttp\") # 选择 aiohttp\nselect_client(\"httpx\") # 选择 httpx，不支持 WebSocket\n```\n\ncurl_cffi 支持伪装浏览器的 TLS \u002F JA3 \u002F Fingerprint，但需要手动设置。\n\n``` python\nfrom bilibili_api import request_settings\n\nrequest_settings.set(\"impersonate\", \"chrome131\") # 第二参数数值参考 curl_cffi 文档\n# https:\u002F\u002Fcurl-cffi.readthedocs.io\u002Fen\u002Flatest\u002Fimpersonate.html\n```\n\n# FA♂Q\n\n**Q: 关于 API 调用的正确姿势是什么？**\n\nA: 所有 API 调用，请尽量使用 **指名方式** 传参，\n因为 API 较多，可能不同函数的传参顺序不一样，例子：\n\n```python\n# 推荐\nvideo.get_info(bvid=\"BV1uv411q7Mv\")\n\n# 当然也可以这样\nkwargs = {\n    \"bvid\": \"BV1uv411q7Mv\"\n}\nvideo.get_info(**kwargs)\n\n# 不推荐\nvideo.get_info(\"BV1uv411q7Mv\")\n```\n\n**Q: 为什么会提示 412 Precondition Failed ？**\n\nA: 你的请求速度太快了。造成请求速度过快的原因可能是你写了高并发的代码。\n\n这种情况下，你的 IP 会暂时被封禁而无法使用，你可以设置代理绕过。\n\n```python\nfrom bilibili_api import request_settings\n\nrequest_settings.set_proxy(\"http:\u002F\u002Fyour-proxy.com\") # 里头填写你的代理地址\n\nrequest_settings.set_proxy(\"http:\u002F\u002Fusername:password@your-proxy.com\") # 如果需要用户名、密码\n```\n\n**Q: 我想在项目中使用这个模块，但是我的项目使用其他请求库进行网络请求（如 `pycurl`），想要模块也同时使用它（们），可以吗？**\n\nA: 可以，但是你可能要自己动手实现模块和具体请求库的适配。详见 [自定义请求库](https:\u002F\u002Fnemo2011.github.io\u002Fbilibili-api\u002F#\u002Frequest_client)\n\n**Q: 怎么没有我想要的功能？**\n\nA: 你可以发 Issue 来提交你的需求，但是，最好的办法是自己写（懒）\n\n\u003Cspan id=\"contribute\">**Q: 我有一个大胆的想法，如何给代码库贡献？**\u003C\u002Fspan>\n\nA: 请先 clone 本仓库一份，然后从 main 分支新建一个分支，在该分支上工作。\n如果你觉得已经可以了，请向项目仓库的 develop 分支发起 Pull request。\n如果你不明白这些操作的话，可以百度。完整指南：[CONTRIBUTING.md](https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api\u002Fblob\u002Fmain\u002F.github\u002FCONTRIBUTING.md)\n\n**Q: 稳定性怎么样？**\n\nA: 由于该模块比较特殊，是爬虫模块，如果 b 站的接口变更，可能会马上失效。因此请始终保证是最新版本。如果发现问题可以提 [Issues][issues-new]。\n\n# 脚注\n\n- \\[1\\] 这里只列出一部分，请以实际 API 为准。\n- \\[2\\] 代码来源：\u003Chttps:\u002F\u002Fwww.zhihu.com\u002Fquestion\u002F381784377\u002Fanswer\u002F1099438784> (WTFPL)\n- \\[3\\] 部分代码来源：\u003Chttps:\u002F\u002Fgithub.com\u002Fm13253\u002Fdanmaku2ass> (GPLv3) \u003Chttps:\u002F\u002Fgithub.com\u002Fewwink\u002Fpython-srt2ass>\n- \\[4\\] 思路来源：\u003Chttps:\u002F\u002Fsocialsisteryi.github.io\u002Fbilibili-API-collect\u002Fdocs\u002Flogin\u002Fcookie_refresh.html> (CC-BY-NC 4.0)\n- \\[5\\] 大量思路来源 \u003Chttps:\u002F\u002Fgithub.com\u002FSocialSisterYi\u002Fbilibili-API-collect> 中相关讨论。\n\n[docs]: https:\u002F\u002Fnemo2011.github.io\u002Fbilibili-api\n[docs-github]: https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api\u002Ftree\u002Fmain\u002Fdocs\n[api.json]: https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api\u002Ftree\u002Fmain\u002Fbilibili_api\u002Fdata\u002Fapi\u002F\n[license]: https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api\u002Ftree\u002Fmain\u002FLICENSE\n[stargazers]: https:\u002F\u002Fgithub.com\u002Fnemo2011\u002Fbilibili-api\u002Fstargazers\n[issues-new]: https:\u002F\u002Fgithub.com\u002FNemo2011\u002Fbilibili-api\u002Fissues\u002Fnew\u002Fchoose\n[get-credential]: https:\u002F\u002Fnemo2011.github.io\u002Fbilibili-api\u002F#\u002Fget-credential\n[pypi]: https:\u002F\u002Fpypi.org\u002Fproject\u002Fbilibili-api-python\n[pypi-dev]: https:\u002F\u002Fpypi.org\u002Fproject\u002Fbilibili-api-dev\n\n# Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Nemo2011\u002Fbilibili-api&type=Date)](https:\u002F\u002Fstar-history.com\u002F#Nemo2011\u002Fbilibili-api&Date)\n","bilibili-api 是一个用于调用哔哩哔哩网站各种API的Python库，支持视频、音频、直播、动态、专栏、用户、番剧等功能。该项目的核心功能包括广泛的API覆盖、异步操作支持、代理使用以绕过风控策略、BV号与AV号互转等实用工具。此外，它还提供了详细的文档和易于理解的函数命名及代码注释。适合需要对B站内容进行数据分析、爬虫开发或者自动化脚本编写的场景使用。请注意，开发者明确要求仅将此库用于学习和测试目的，并严格遵守相关法律法规。",2,"2026-06-11 03:27:38","top_topic"]