1
0
mirror of https://github.com/wbt5/real-url.git synced 2025-06-17 00:09:58 +08:00

🐛 Fix 爱奇艺体育直播 (#265)

-优化返回数据的正则匹配方法
-增加未开播和错误直播间地址的判断
This commit is contained in:
wbt5 2021-11-07 22:17:19 +08:00
parent 009574e918
commit af57d695e4
No known key found for this signature in database
GPG Key ID: 92D5C42E815A2BD6

View File

@ -19,6 +19,11 @@ import requests
class sIQiYi:
def __init__(self, rid):
"""
收费直播间未开播直播间已结束直播间获取到的地址均无法播放
Args:
rid: 这里传入完整的直播间地址
"""
url = rid
self.rid = url.split('/')[-1]
self.s = requests.Session()
@ -50,8 +55,8 @@ class sIQiYi:
i = n[:y - x]
n = n[y - x:]
for r in range(0, len(a)):
if a[r] == n[r]:
for rs, ele in enumerate(a):
if ele == n[rs]:
i += '0'
else:
i += '1'
@ -108,12 +113,17 @@ class sIQiYi:
# 请求url
url = f'https://live.video.iqiyi.com{k}&vf={vf}'
res = self.s.get(url).text
try:
res, = re.findall(r'try{[\s\S]{33}\((.*)\);}catch\(e\){};', res)
url = json.loads(res)['data']['streams'][-1]['url']
except ValueError:
raise Exception('Incorrect rid.')
data = re.search(r'try{\w{33}\(([\w\W]+)\s\);}catch\(e\){};', res).group(1)
data = json.loads(data)
if data['code'] == 'A00004':
raise Exception('直播间地址错误!')
elif data['code'] == 'A00000':
try:
url = data['data']['streams'][-1]['url']
except IndexError:
raise Exception('可能直播未开始直播或为付费直播!')
else:
raise Exception('无法定位错误原因可提交issue')
return url