Project Icon

bilibili-api

Python实现的哔哩哔哩全面API库

bilibili-api是一个Python开发的哔哩哔哩API库,提供400多个接口,覆盖视频、音频、直播、动态等多个领域。该库支持异步操作和代理使用,全面兼容BV号,并提供AV号与BV号互转等实用功能。接口调用简单,命名清晰,注释完善,方便开发者快速实现哔哩哔哩相关功能和数据采集。

bilibili-api 标志

bilibili-api

[API 数量][api.json] [许可证][LICENSE] Python [稳定版本][pypi] [预发布版本][pypi-dev] [星标数][stargazers] 测试

:warning: 接口可能会发生变动,请及时更新到最新版 [稳定版本][pypi]

注意事项:使用此模块时请仅用于学习和测试,禁止用于非法用途及其他恶劣的社区行为如:恶意刷屏、辱骂黄暴、各种形式的滥用等,违规此模块许可证 GNU General Public License Version 3 及此条注意事项而产生的任何后果自负,模块的所有贡献者不负任何责任。

开发文档: [bilibili_api 开发文档][docs] ([GitHub][docs-github])

原仓库地址:https://github.com/MoyuScript/bilibili-api

Github 仓库:https://github.com/nemo2011/bilibili-api

此仓库是对原仓库 bilibili-api 的继续维护。更多相关信息请前往原仓库地址查看。

简介

这是一个用 Python 编写的调用 Bilibili 各种 API 的库, 涵盖范围包括视频、音频、直播、动态、专栏、用户、番剧等[1]

特色

  • 涵盖范围广,基本覆盖常用的爬虫和操作功能。
  • 可使用代理,绕过 b 站风控策略。
  • 全面支持 BV 号(bvid),同时也兼容 AV 号(aid)。
  • 调用简便,函数命名易懂,代码注释详细。
  • 不仅仅是官方提供的 API!还附加:AV 号与 BV 号互转[2]、连接直播弹幕 Websocket 服务器、视频弹幕反查、下载弹幕、字幕文件、专栏内容爬取等。
  • 全部是异步操作

快速上手

首先使用以下指令安装本模块:

$ pip3 install bilibili-api-python

接下来我们来获取视频的播放量等信息:

import asyncio
from bilibili_api import video


async def main() -> None:
    # 实例化 Video 类
    v = video.Video(bvid="BV1uv411q7Mv")
    # 获取信息
    info = await v.get_info()
    # 打印信息
    print(info)


if __name__ == "__main__":
    asyncio.get_event_loop().run_until_complete(main())

输出(已格式化,已省略部分):

{
    "bvid": "BV1uv411q7Mv",
    "aid": 243922477,
    "videos": 1,
    "tid": 17,
    "tname": "单机游戏",
    "copyright": 1,
    "pic": "http://i2.hdslb.com/bfs/archive/82e52df9d0221836c260c82f2890e3761a46716b.jpg",
    "title": "爆肝98小时!在 MC 中还原糖调小镇",
    "pubdate": 1595203214,
    "ctime": 1595168654,
    ...以及更多
}

如何给这个视频点赞?我们需要登录自己的账号。

这里的设计是传入一个 Credential 类,获取所需的信息参照:[获取 Credential 类所需信息][get-credential]

下面的代码将会给视频点赞

import asyncio
from bilibili_api import video, Credential

async def main() -> None:
    # 实例化 Credential 类
    credential = Credential(sessdata=SESSDATA, bili_jct=BILI_JCT, buvid3=BUVID3)
    # 实例化 Video 类
    v = video.Video(bvid="BVxxxxxxxx", credential=credential)
    info = await v.get_info()
    print(info)
    # 给视频点赞
    await v.like(True)

if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(main())

如果没有报错,就代表调用 API 成功,你可以到视频页面确认是否调用成功。

警告 注意,请不要泄露这两个值给他人,否则你的账号将可能遭受盗号的风险!

异步迁移

由于从 v5 版本开始,基本全部改为异步,如果你不会异步,可以参考 asyncio

异步可以进行并发请求,性能更高,不过如果请求过快仍然会导致被屏蔽。

总的来说,异步比同步更有优势,所以不会的话可以去学一下,会发现新天地(误 如果你仍然想继续使用同步代码,请参考 同步执行异步代码

以下为 API 关于异步请求库使用的详细信息:

功能同步异步aiohttphttpx备注
LiveDanmakuVideoOnlineMonitor[][x][x][ ]httpx 暂不支持 WebSocket
login[x][ ][ ][x]目前暂时仅支持同步请求
其他[][x][x][x]

常见问题

问:关于 API 调用的正确方式是什么?

答:所有 API 调用,请尽量使用指名方式传参,因为 API 较多,可能不同函数的传参顺序不一样,例如:

# 推荐
video.get_info(bvid="BV1uv411q7Mv")

# 当然也可以这样
kwargs = {
    "bvid": "BV1uv411q7Mv"
}
video.get_info(**kwargs)

# 不推荐
video.get_info("BV1uv411q7Mv")

问:为什么会提示 412 Precondition Failed ?

答:你的请求速度太快了。造成请求速度过快的原因可能是你写了高并发的代码。

这种情况下,你的 IP 会暂时被封禁而无法使用,你可以设置代理绕过。

from bilibili_api import settings

settings.proxy = "http://your-proxy.com" # 里面填写你的代理地址

settings.proxy = "http://username:password@your-proxy.com" # 如果需要用户名、密码

问:怎么没有我想要的功能?

答:你可以发 Issue 来提交你的需求,但是,最好的办法是自己写(懒)

问:我有一个大胆的想法,如何给代码库贡献?

答:请先克隆本仓库一份,然后从 main 分支新建一个分支,在该分支上工作。如果你觉得已经可以了,请向项目仓库的 develop 分支发起 Pull request。如果你不明白这些操作的话,可以百度。完整指南:CONTRIBUTING.md

问:稳定性怎么样?

答:由于该模块比较特殊,是爬虫模块,如果 B 站的接口变更,可能会马上失效。因此请始终保证是最新版本。如果发现问题可以提 [Issues][issues-new]。

脚注

Star 历史

Star 历史图表

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号