强大到离谱的哔哩哔哩API——bilibili_api

1,786 阅读2分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第3篇文章,点击查看活动详情

最近找到了一个哔哩哔哩的API,是一个很强的库,甚至使用了asyncio(本来想找哔哩哔哩官方的,但它不支持python,甚至有那么一些些没看懂),就找到了这个。不过可惜的是作者给的详细讲解链接竟然nginx报错,我也不知道咋回事,网上的教程好像没有,这里就统一讲一下吧。(我是啃源代码和注释自己学会的)

首先安装

pip install bilibili-api

首先是基础的video类

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())

我这里会asyncio报错,但是允许成功。(我不懂asyncio,如果有大佬会的能不能讲一下,报错是There is no current event loop)

如果你继续看pypi.org/project/bil… 你会发现下不去了,接下来是credential,但是作者给的链接会404。。。

好吧,那么我————救世主(bushi)出场啦!

通俗一点讲,credential就是模拟你登录然后进行操作。

from bilibili_api importCredential
cred = Credential(buvid3="", bili_jct="", sessdata="")

此处需要找到你的buvid3, bilibili_jct和sessdata

那么在哪里找呢?

首先登录你的哔哩哔哩账号

在浏览器右上角的锁图案点击,找到cookie,在bilibili.com中找这三项,把内容复制进去就好了。

简单吗?简单

但是作者的链接坏了!!!

import asyncio
from bilibili_api import video, Credential

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

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

接下来就是不同库的使用了。

这里浅浅讲一个直播间发弹幕

from bilibili_api import video, live, Danmaku, Credential
async def main():
    cred = Credential()
    l = live.LiveRoom(room_display_id=, credential=cred)
    chat = await l.send_danmaku(danmaku=Danmaku(text="召唤神龙"))

room_display_id是在直播间分享连接中live.bilibili.com/ 后面的,直接int传入

后面一句send_danmaku让我找了半天才找到用Danmaku,因为它要求传入的类就叫Danmaku,就离谱(这种传参要求和检查方法挺厉害的)

这里只是初步发弹幕,还有其他的参数,只不过text参数是必要的。

如果运行成功,就可以去直播间看看了,我这里倒是蛮顺利的。

今天就到这里吧,有兴趣的童鞋可以去看源码或者帮我点赞,点赞过6再出一期。

也算是做贡献了吧。