Closed yushiro closed 1 year ago
修改过的get_up_info方法, 只是加了2个warn输出
@raise_api_error
async def get_up_info(client: httpx.AsyncClient, url_or_mid: str, pn=1, ps=30, order='pubdate', keyword=''):
"""
获取up主信息
:param url_or_mid:
:param pn:
:param ps:
:param order:
:param keyword:
:param client:
:return:
"""
if url_or_mid.startswith('http'):
mid = re.findall(r'/(\d+)', url_or_mid)[0]
else:
mid = url_or_mid
params = {'mid': mid, 'order': order, 'ps': ps, 'pn': pn, 'keyword': keyword}
#日志输出params的内容
logging.warn(f"参数,{params}")
res = await req_retry(client, 'https://api.bilibili.com/x/space/wbi/arc/search', params=params)
info = json.loads(res.text)
logging.warn(f"返回值:{info}")
up_name = info['data']['list']['vlist'][0]['author']
total_size = info['data']['page']['count']
bv_ids = [i['bvid'] for i in info['data']['list']['vlist']]
return up_name, total_size, bv_ids
b站api有变动,等待后续修复
各位如果自己有能力调整的,也欢迎PR
基本找到临时解决方案了, 虽然修改了一下代码, 但目前的方案还不确定是否可以长期有效。 API请求带了w_rid这个散列值, 用的是MD5算法, 是把querystring排序后, 拼接上一个token, 然后MD5产生的。 token的生成算法也提取出来了, 但是有2个入参key还不确定是怎么来的, 虽然现在的b站并没有使用动态key, 每次发出来的请求, token都是一样的。 我使用一段时间再来回复这个方案是否可行。
感谢提醒,大致看了一下那个项目的代码,应该能够一劳永逸的解决这个问题,key是从另一个api接口获取的。 我照样子去修改一下。 btw:我不懂python,代码pr后,你可以自己看看怎么优化。 python代码都是让ai帮我从js转为py的
bilix get_up "https://space.bilibili.com/522177045" --from-browser chrome
我额外加了2行日志输出, 返回的信息如下:
如果多运行几次bilix, 偶尔能返回正确的值, 然后就可以正常下载了, 但大部分时候都是失败的, 这样的错误信息是近几天才出现的, 同样的代码, 我已经运行了1~2个月了, 之前一直没问题。