1
0
mirror of https://github.com/wbt5/real-url.git synced 2025-06-16 15:59:57 +08:00
zhibo-url/kbs.py
wbt5 72ae1e17ca
🐛 Fix 腾讯体育 (#181)
腾讯体育platform、appVer参数更新
2021-06-13 20:54:59 +08:00

86 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
# @Time: 2021/5/22 8:02
# @Project: real-url
# @Author: wbt5
# @Blog: https://wbt5.com
import hashlib
import time
from urllib.parse import parse_qsl, urlsplit
import requests
class KBS:
"""
- 腾讯体育直播,看比赛频道 https://kbs.sports.qq.com/
- 直播间地址类似https://sports.qq.com/kbsweb/game.htm?mid=100006:2337840需要其中的mid
- 只能获取免费观看的直播间
- 请求参数params中的defn蓝光fhd、超清shd、高清hd、标清sd未登陆时最高获取超清蓝光需VIP。
"""
def __init__(self, rid):
var = dict(parse_qsl(urlsplit(rid).query))
mid = var.get('mid')
with requests.Session() as self.s:
res = requests.get(f'https://matchweb.sports.qq.com/kbs/matchDetail?mid={mid}').json()
self.vid = res['data']['liveId']
self.livepid = res['data']['programId']
def get_real_url(self):
tt = int(time.time())
week = int(time.strftime('%w'))
s = ('06fc1464', '4244ce1b', '77de31c5', 'e0149fa2', '60394ced', '2da639f0', 'c2f0cf9f')
ha = f'{s[week - 1]}{self.vid}{tt}*#06#40201'
ckey = hashlib.md5(ha.encode('utf-8')).hexdigest()
params = {
'cmd': 2,
'cnlid': self.vid,
'pla': 0,
'stream': 2,
'system': 0,
'appVer': '3.0.0.142',
'encryptVer': f'7.{7 if week == 0 else week}',
'qq': 0,
'device': 'PC',
'guid': 'f56776a1fa52e9c8c4987bfecfbf0503',
'defn': 'shd', # shd默认超清
'host': 'qq.com',
'livepid': self.livepid,
'logintype': 1,
'vip_status': 1,
'livequeue': 1,
'fntick': tt,
'tm': tt,
'sdtfrom': 1107,
'platform': 40201,
'cKey': ckey,
'queueStatus': 0,
'sphttps': 1,
'authext': '{}',
'auth_ext': '{}',
'auth_from': 40001,
# 'callback': 'txvlive_videoinfoget_2767135792',
}
res = self.s.get('https://infozb6.video.qq.com/', params=params).json()
playurl = res.get('playurl', 0)
if res['errinfo']:
raise Exception('errinfo')
else:
return playurl
def get_real_url(rid):
try:
kbs = KBS(rid)
return kbs.get_real_url()
except Exception as e:
print('Exception', e)
return False
if __name__ == '__main__':
r = input('请输入腾讯体育直播间地址:\n')
print(get_real_url(r))