• This repository has been archived on 19/Jun/2022
  • Stars
    star
    1,867
  • Rank 24,820 (Top 0.5 %)
  • Language
    Python
  • License
    GNU General Publi...
  • Created almost 5 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

哔哩哔哩的API调用模块

停止维护公告

由于本人已参加工作,很难再腾出时间来维护这个库了,故作出永久停止维护的决定。感谢大家一直以来的贡献和支持。

Pypi 上仍然能下载和使用该库,只是不再更新。如果你动手能力强,也可以 fork 下来自己更新再发布,但是开源协议 GPL 仍然有效。

再发布无需经过我的许可。

该项目目前由 Nemo2011 继续维护,地址:https://github.com/Nemo2011/bilibili_api

LOGO

bilibili-api

API 数量 STARS LICENSE Python Testing

开发文档: bilibili_api 开发文档 (GitHub)

简介

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

特色

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

快速上手

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

$ pip install bilibili-api

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

import asyncio
from bilibili_api import video

async def main():
    # 实例化 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,
    ...and more
}

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

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

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

import asyncio
from bilibili_api import video, Credential

async def main():
    # 实例化 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

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

总的来说,异步比同步更有优势,所以不会的话可以去学一下,会发现新天地(误

如果你仍然想继续使用同步代码,请参考 同步执行异步代码

FAQ

Q: 关于 API 调用的正确姿势是什么?

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

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

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

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

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

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

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

from bilibili_api import settings

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

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

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

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

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

Q: 稳定性怎么样?

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

脚注

More Repositories

1

double-mouse-downloader

鼠鼠下载器——跨平台哔哩哔哩视频下载工具。
TypeScript
432
star
2

bilibili-api-docs

bilibili-api 的开发文档
JavaScript
27
star
3

2fa-test

HTML
22
star
4

picgo-plugin-superbed

PicGo 的 聚合图床上传插件
JavaScript
16
star
5

FontAwesomeProDownloader

著名的字体图标 Font Awesome Pro 版本的下载脚本。
Python
12
star
6

open-source-best-practice

教你如何做好一个开源项目
Shell
11
star
7

bilibili-login-js

b 站登录库。
JavaScript
9
star
8

PolPotKillingRhythm

波波の节奏大师
C#
7
star
9

unity-2048

用 Unity 实现的 2048 小游戏
C#
4
star
10

tx-clannad

TypeScript
4
star
11

waibibabo

歪比巴卜加密算法
HTML
4
star
12

bilibili-protobuf

这是一个描述b站弹幕的 Protobuf 格式相关的仓库
4
star
13

simple-piano-flow

JavaScript
3
star
14

MoyuScript

TypeScript
3
star
15

music

摸鱼乐谱 MIDI 网
TypeScript
2
star
16

chaoxing-qikan-body-shower

超星期刊 WEB 端正文显示
JavaScript
2
star
17

web-template-fe

自用WEB模板(前端)
TypeScript
1
star
18

super-dingbot

Node.js 钉钉机器人库
TypeScript
1
star
19

moyu-prompt

TypeScript
1
star
20

koa-aes-cookies

A middleware for koa that can save and get cookie encrypted with AES to browser.
TypeScript
1
star
21

koa-colorful-logger

A middleware for koa that can log colorful request info automatically. And you can also use it as a normal logger.
TypeScript
1
star
22

bilibili-delete-all-dynamic

JavaScript
1
star
23

atrijs

A keyboard and mouse monitor for Node.js (Windows only)
C++
1
star
24

StarTripOrchestra

《星空列车与白的旅行》OP 管弦乐改编可视化工程(Godot & C#)
C#
1
star
25

qzone-album-sync

QQ 空间相册同步到本地
JavaScript
1
star