mirror of
https://github.com/wbt5/real-url.git
synced 2025-06-17 08:25:25 +08:00
60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
# 获取虎牙直播的真实流媒体地址。
|
||
# 现在虎牙直播链接需要密钥和时间戳了
|
||
|
||
|
||
import requests
|
||
import re
|
||
import base64
|
||
import urllib.parse
|
||
import hashlib
|
||
import time
|
||
|
||
|
||
def live(e):
|
||
i, b = e.split('?')
|
||
r = i.split('/')
|
||
s = re.sub(r'.(flv|m3u8)', '', r[-1])
|
||
c = b.split('&', 3)
|
||
c = [i for i in c if i != '']
|
||
n = {i.split('=')[0]: i.split('=')[1] for i in c}
|
||
fm = urllib.parse.unquote(n['fm'])
|
||
u = base64.b64decode(fm).decode('utf-8')
|
||
p = u.split('_')[0]
|
||
f = str(int(time.time() * 1e7))
|
||
l = n['wsTime']
|
||
t = '0'
|
||
h = '_'.join([p, t, s, f, l])
|
||
m = hashlib.md5(h.encode('utf-8')).hexdigest()
|
||
y = c[-1]
|
||
url = "{}?wsSecret={}&wsTime={}&u={}&seqid={}&{}".format(i, m, l, t, f, y)
|
||
return url
|
||
|
||
|
||
def get_real_url(room_id):
|
||
try:
|
||
room_url = 'https://m.huya.com/' + str(room_id)
|
||
header = {
|
||
'Content-Type': 'application/x-www-form-urlencoded',
|
||
'User-Agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) '
|
||
'Chrome/75.0.3770.100 Mobile Safari/537.36 '
|
||
}
|
||
response = requests.get(url=room_url, headers=header).text
|
||
liveLineUrl = re.findall(r'liveLineUrl = "([\s\S]*?)";', response)[0]
|
||
if liveLineUrl:
|
||
if 'replay' in liveLineUrl:
|
||
return '直播录像:https:' + liveLineUrl
|
||
else:
|
||
liveLineUrl = live(liveLineUrl)
|
||
real_url = ["https:" + liveLineUrl, "https:" + re.sub(r'_\d{4}.m3u8', '.m3u8', liveLineUrl)]
|
||
else:
|
||
real_url = '未开播或直播间不存在'
|
||
except:
|
||
real_url = '未开播或直播间不存在'
|
||
return real_url
|
||
|
||
|
||
rid = input('请输入虎牙房间号:\n')
|
||
real_url = get_real_url(rid)
|
||
print('该直播间源地址为:')
|
||
print(real_url)
|