Git Product home page Git Product logo

bilibili-api's Introduction

bilibili-api's People

Contributors

alanduzzz avatar atkghost avatar bakashigure avatar david082321 avatar ericsell avatar gary2018x avatar imldy avatar iyear avatar l-trump avatar limn2o4 avatar liuhuancom avatar lyzhang0113 avatar majjcom avatar mengguojia avatar mizar6 avatar moyuscript avatar mz289 avatar nickeaglenny avatar nukoooo avatar wesleywang27 avatar whitepaper233 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bilibili-api's Issues

bilibili_api.video.get_comments()会吞掉部分评论

我尝试爬取视频的评论,但是发现有一些评论被吞了。

import bilibili_api
a = bilibili_api.video.get_comments(bvid='BV13E411p7pu')    # 当时实际评论数为9865
len(a)    # 7618

如果是一些评论数比较少的,就不会出现这个问题,

注释建议

类型:建议

版本:2.0.0

banggumi.py的长评(get_long_comments_raw、get_long_comments)注释是短评,需要注意一下,虽然不影响使用
image

使用收藏功能报错bilibili_api.src.exception.BiliException: 返回code不为0。错误代码:-400, 信息:请求错误

from bilibili_api.user import UserInfo
from bilibili_api import Verify
from bilibili_api.video import VideoOperate
from bilibili_api.video import VideoInfo
video_info = VideoInfo(bvid=BV号,verify=Verify(sessdata=, csrf=))
a=video_info.get_media_list()
print(a)
video_info = VideoOperate(bvid=BV号,verify=Verify(sessdata=, csrf=))
print(video_info)
video_info.like(1)
video_info.favorite(media_list=["id号"],mode=1)

其中like功能可以正常使用,而favorite功能报错
Traceback (most recent call last):
File "D:/python/Python37-32/bili007.py", line 11, in
video_info.favorite(media_list=[""],mode=1)
File "D:\python\Python37-32\lib\site-packages\bilibili_api\src\video.py", line 407, in favorite
post()
File "D:\python\Python37-32\lib\site-packages\bilibili_api\src\utils.py", line 176, in call
raise exception.BiliException(con["code"], con["message"])
bilibili_api.src.exception.BiliException: 返回code不为0。错误代码:-400, 信息:请求错误

不知道是哪里出问题了,大佬可以帮忙看下吗

想了解一下是否转发动态只能得到 560 个 (左右)

因为确实是看到 https://github.com/Passkou/bilibili_api/blob/690d98d6b041910eab71c8e9900f7a261288b03d/bilibili_api/src/dynamic.py#L281 那边的 560 是 Hardcode 进去的
我在一个 2000 转发的动态里,如果把 560 去掉,能得到 618 条信息,但还是没办法得到所有的转发
即使是在网页里滚到”没有更多啦(〜 ̄△ ̄)〜“也拿不到 T.T
也在一些讨论自制 JS 脚本抽奖的文章里看到非官方途径是不可能拿到所有转发信息
我就好奇是否 Bilibili 确实不允许获取所有转发情况……不能的话会不会很对不起没有走非官方抽奖途径的用户 0.0

【提问】user.get_up_info获取到的信息只有{}

【提问】
版本:bilibili-api 2.1.2
我在使用以下代码(简化过的)时获得的数据只有一个{},想问问这是怎么回事(我是萌新)
from bilibili_api import user
uid = 114514
x = user.get_up_info(uid=uid)
print(x)

输出:

{}

新增关注分组

类型:建议

版本:V2

我想要个设置分组的接口可以吗qwq

类型:提问

类型:提问

版本:2.1.4

作者大大,有没有好用的代理,今天一直被B站屏蔽,而且就只是循环爬取10个视频的评论而且。

LiveDanmaku类连接弹幕服务器时能否实现自动重连功能

类型:提问

版本:2.1.2

您好,我试着用LiveDanmaku类的wss连接弹幕服务器功能做一个开播提醒工具,因为connect_all_livedanmaku是阻塞的所以用thread开了个子线程跑,但是通过该观察log发现经常有
[WARNING] 连接被断开
的记录。
想问一下默认情况下wss连接被断开以后会有重连操作吗?如果希望他重连的话应该如何调整调用方法呢?

调试用程序代码:

import sqlite3
import threading
import asyncio
from bilibili_api import user, live, Verify
from bilibili_api.live import LiveDanmaku
from functools import partial

def initialize_room_wss():
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    db_conn = sqlite3.connect("rec.db")
    db = db_conn.cursor()
    room_id_list = list(db.execute("select caster_id, caster_room_id from on_air"))
    rooms = []
    if (len(room_id_list)>0):
        for i in range(len(room_id_list)):
            rooms.append(LiveDanmaku(room_id_list[i][1]))
            rooms[i].add_event_handler("LIVE",partial(notify_onair,userid=room_id_list[i][0]))
            rooms[i].add_event_handler("PREPARING",partial(notify_offair,userid=room_id_list[i][0]))
    live.connect_all_livedanmaku(*rooms)

wss = threading.Thread(target=initialize_room_wss)
wss.start()

小白求问

P大,想用您的API爬数据,第一步就报错了,看了很久也不知道是哪里出了问题。我是初学者,基本的Python语法都不熟,如果有些低级错误请见谅。
from bilibili_api import Verify
from bilibili_api.video import VideoInfo
from bilibili_api.video import Danmaku
verify = Verify(sessdata="6b49d6ef..........", csrf="a2e7f2dc44............")
video_info = VideoInfo(bvid="BV1gC4y1h722", verify=verify)

danmu = video_info.get_danmaku()
for i in danmu:
    print(i.text)

报错是这样的:
File "", line 1
from bilibili_api import Verify
^
SyntaxError: invalid character in identifier

找不到get_short_comments

from bilibili_api import video, Verify,bangumi
......
comments=bangumi.get_short_comments(season_id=bangumi.get_meta(media_id=md)['media']['season_id'])
#AttributeError: module 'bilibili_api.bangumi' has no attribute 'get_short_comments'

在尝试获取视频的评论的时候出现了网络错误,错误代码是412

类型:提问
版本:2.1.4
使用的Python版本:3.7.7

先给老哥点个赞👍。
10月9号晚上的时候,在使用中get_comments函数爬取评论的时候遇到了网络错误,错误代码412的问题。之前没遇到过,这是B站的问题么?

Traceback (most recent call last):
  File "d:/专业综合实训/test.py", line 3, in <module>
    text = video.get_comments(bvid=Bvid)
  File "D:\python37\lib\site-packages\bilibili_api\video.py", line 486, in get_comments
    replies = common.get_comments(aid, "video", order, limit, callback, verify)
  File "D:\python37\lib\site-packages\bilibili_api\common.py", line 171, in get_comments
    resp = get_comments_raw(oid=oid, pn=page, order=order, verify=verify, type_=type_)
  File "D:\python37\lib\site-packages\bilibili_api\common.py", line 148, in get_comments_raw
    resp = utils.get(api["url"], params=params, cookies=verify.get_cookies())
  File "D:\python37\lib\site-packages\bilibili_api\utils.py", line 400, in get
    resp = request("GET", url=url, params=params, cookies=cookies, headers=headers, **kwargs)
  File "D:\python37\lib\site-packages\bilibili_api\utils.py", line 387, in request
    raise exceptions.NetworkException(req.status_code)
bilibili_api.exceptions.NetworkException: 网络错误。状态码:412

有些视频无法获取视频信息和下载链接

用大佬项目爬收藏夹的时候发现有一些视频无法获取下载链接
比如这个
https://www.bilibili.com/video/av413587

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mnt/d/Code/bilibili_tool/.venv/lib/python3.6/site-packages/bilibili_api/src/video.py", line 173, in get_playurl
    self.__get_self_info()
  File "/mnt/d/Code/bilibili_tool/.venv/lib/python3.6/site-packages/bilibili_api/src/video.py", line 29, in __get_self_info
    self.info = self.get_video_info()
  File "/mnt/d/Code/bilibili_tool/.venv/lib/python3.6/site-packages/bilibili_api/src/video.py", line 40, in get_video_info
    self.info = get()
  File "/mnt/d/Code/bilibili_tool/.venv/lib/python3.6/site-packages/bilibili_api/src/utils.py", line 143, in __call__
    raise exception.BiliException(con["code"], con["message"])
bilibili_api.src.exception.BiliException: 返回code不为0。错误代码:-403, 信息:访问权限不足

How to use "get_history_danmaku"?

I got the following error:

danmuku = my_video.get_history_danmaku(date="2020-08-01", page=0)

Traceback (most recent call last):
File "", line 1, in
File "D:\Anaconda\envs\pytorch\lib\site-packages\bilibili_api\src\video.py", line 119, in get_history_danmaku
con = req.content.decode("utf-8")
File "D:\Anaconda\envs\pytorch\lib\xml\dom\minidom.py", line 1968, in parseString
return expatbuilder.parseString(string)
File "D:\Anaconda\envs\pytorch\lib\xml\dom\expatbuilder.py", line 925, in parseString
return builder.parseString(string)
File "D:\Anaconda\envs\pytorch\lib\xml\dom\expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: not well-formed (invalid token): line 1, column 0

很奇怪把video_info.get_playurl()放在video_info.get_video_info()后面就会报错

很奇怪把video_info.get_playurl()放在video_info.get_video_info()后面就会报错

from bilibili_api import video
video_info = video.VideoInfo(44566179)
print(video_info.get_video_info())
print(video_info.get_playurl())
Traceback (most recent call last):
  File "./text1.py", line 6, in <module>
    print(video_info.get_playurl())
  File "/mnt/d/Code/bilibili_tool/.venv/lib/python3.6/site-packages/bilibili_api/src/video.py", line 174, in get_playurl
    if page + 1 > len(self.info["pages"]):
TypeError: 'Get' object is not subscriptable

更新api

b站使用新的BV号,有时间更新一下BV号api嘛?

【提问】LiveDanmaku连接时出错

基本按照文档的调用方法

from bilibili_api.live import LiveDanmaku
from bilibili_api import Verify

veri = Verify('xxxxxx', 'xxxxxxx')
danmu = LiveDanmaku(room_display_id=xxxxx, debug=True, verify=veri)
@danmu.on("DANMU_MSG")
async def on_danmu(msg):
    print(msg)

if __name__ == "__main__":
    danmu.connect()

因为打开了debug, debug信息如下

正在获取真实房间号
获取成功,真实房间号:xxxx
正在获取聊天服务器配置
聊天服务器配置获取成功
准备连接直播间
正在尝试连接主机: wss://tx-gz-live-comet-03.chat.bilibili.com:443/sub
连接主机成功, 准备发送认证信息

紧接着就出错了, 具体的Traceback如下:

Traceback (most recent call last):
  File "main.py", line 17, in <module>
    danmu.connect()
  File "/home/reina/.local/lib/python3.6/site-packages/bilibili_api/live.py", line 403, in connect
    loop.run_until_complete(self.__main())
  File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
    return future.result()
  File "/home/reina/.local/lib/python3.6/site-packages/bilibili_api/live.py", line 444, in __main
    await self.__loop()
  File "/home/reina/.local/lib/python3.6/site-packages/bilibili_api/live.py", line 456, in __loop
    asyncio.create_task(self.__heartbeat())
AttributeError: module 'asyncio' has no attribute 'create_task'

请问该如何解决?

顺带一提, 好像现在直播房间的real_id和display_id一样了(不大确定)

如果能解答的话就太感谢了!

send_dynamic 返回 TypeError,但动态发送成功

类型:提问/漏洞(?)
API 版本:2.0.3
Python 版本:3.8.5 32-bit

Example code:

from bilibili_api import Verify, dynamic

verify = Verify("", "")
dynamic.send_dynamic(text="Testing", verify=verify)

Vscode报错:
argument of type 'NoneType' is not iterable
image
但实际动态已经发送成功。
这是 function 问题还是我的问题..

【公告】关于项目更新频率放缓的说明

各位好!我是这个项目的发起者Passkou。
首先感谢大家使用这个模块,也感谢众多贡献者们对这个项目作出贡献。截至目前这个项目已经获得了370+的stars,这是我第一个在Github和pip上发布的项目,是大家的共同努力才让这个项目变得更完善的,在此我非常感谢大家对这个项目的支持!
因我学业繁忙,加上最近在深入研究前端技术,所以这个项目的更新频率会放缓了,在此我向大家表示歉意。
关于本模块,目前常用的功能基本都已经覆盖,如果大家还有什么需要的功能,还请尽量自己实现,你也可以给这个仓库发pull request来加入你自己写的功能。如果在开发过程中有任何不明白之处欢迎发Issue垂询!我很乐意解答大家在技术上的各种问题!
如有措辞不当还请见谅,感谢大家一如既往的支持!

pip安装不上

类型:漏洞
版本:V2
我的pip安装不上这个库qwq
image

能更加方便地获取cookie吗

我最近用这个api+tkinter写了一个小的三连GUI玩具,但是cookie的获取还是比较麻烦。可不可以直接通过账号密码方式获取到cookie?
另外这个小玩具方便的话,也想请大大指教一下,看看还有无什么进一步的空间,谢谢。

TypeError: unsupported operand type(s) for ^: 'str' and 'int'

运行代码

from bilibili_api import video, Verify
# verify = Verify(sessdata="your sessdata", csrf="your csrf")
my_video = video.VideoInfo(aid="40473736"
#                            , verify=verify
                          )

错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-2-9d982306d6e5> in <module>
      1 # verify = Verify(sessdata="your sessdata", csrf="your csrf")
----> 2 my_video = video.VideoInfo(aid="40473736"
      3 #                            , verify=verify
      4                           )

C:\ProgramData\Anaconda3\lib\site-packages\bilibili_api\src\video.py in __init__(self, bvid, aid, verify)
     29             raise exception.bilibiliApiException("bvid和aid至少指定其中一个")
     30         if bvid == "":
---> 31             self.__aid2bvid()
     32         elif aid == 0:
     33             self.__bvid2aid()

C:\ProgramData\Anaconda3\lib\site-packages\bilibili_api\src\video.py in __aid2bvid(self)
     37 
     38     def __aid2bvid(self):
---> 39         self.bvid = utils.aid2bvid(self.aid)
     40 
     41     def __get_self_info(self):

C:\ProgramData\Anaconda3\lib\site-packages\bilibili_api\src\utils.py in aid2bvid(aid)
    228         return ''.join(r)
    229 
--> 230     return enc(aid)

C:\ProgramData\Anaconda3\lib\site-packages\bilibili_api\src\utils.py in enc(x)
    222 
    223     def enc(x):
--> 224         x = (x ^ xor) + add
    225         r = list('BV1  4 1 7  ')
    226         for i in range(6):

TypeError: unsupported operand type(s) for ^: 'str' and 'int'

ReadMe 链接失效?

Readme 里面详细教程和有关verify的链接好像失效了
链接会导回Readme

谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.