Open ZhongMingKun opened 4 years ago
windows下可正常访问https://api.live.bilibili.com/room/v1/Room/playUrl?cid=81170&qn=0&platform=web ,但在linux下访问会出错 另外 https://api.live.bilibili.com/xlive/web-room/v1/index/getRoomPlayInfo?room_id=81170&play_url=1&mask=1&qn=0&platform=web 会返回一下信息,请问信息要怎么用
{
'code': 0,
'message': '0',
'ttl': 1,
'data': {
'room_id': 81170,
'short_id': 0, 'uid': 376772,
'need_p2p': 0,
'is_hidden': False,
'is_locked': False,
'is_portrait': False,
'live_status': 1,
'hidden_till': 0,
'lock_till': 0,
'encrypted': False,
'pwd_verified': True,
'live_time': 1578031308,
'room_shield': 1,
'is_sp': 0,
'special_type': 0,
'play_url': None
}
}
怀疑是user-agent的问题
import urllib.request
import json
def get_json_from(url):
req = urllib.request.Request(
url,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
}
)
with urllib.request.urlopen(req, timeout=5) as conn:
response = conn.read()
text = response.decode("utf-8")
info = json.loads(text)
return info
playUrlRes = get_json_from(f"https://api.live.bilibili.com/room/v1/Room/playUrl?cid=81170&qn=0&platform=web")
print(playUrlRes)
这样可否获得成功的返回?
这个api主要是为了获取下载地址,但是你的返回结果并没有play_url
还是一样呢。。
现在还报错吗
还有的,同样的报错
我在Linux执行是没什么问题的,看那个返回的错误代码,估计是B站那边的问题。 而且按你的那个”单独把获取playUrlRes的部分运行"的代码放在我这边Linux运行后,返回的数据没有异常。
单独把获取playUrlRes的部分运行
返回异常数据
请问要怎么解决