我报名参加金石计划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再出一期。
也算是做贡献了吧。