1
0
mirror of https://github.com/wbt5/real-url.git synced 2025-08-01 14:48:01 +08:00

Add 腾讯体育直播 (#170)

This commit is contained in:
wbt5 2021-05-22 13:17:05 +08:00
parent 069ca6226a
commit fd6c643fe6
No known key found for this signature in database
GPG Key ID: 92D5C42E815A2BD6

85
kbs.py Normal file
View File

@ -0,0 +1,85 @@
# -*- 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#402011'
ckey = hashlib.md5(ha.encode('utf-8')).hexdigest()
params = {
'cmd': 2,
'cnlid': self.vid,
'pla': 0,
'stream': 2,
'system': 0,
'appVer': '3.0.0.138',
'encryptVer': f'7.{week}',
'qq': 0,
'device': 'PC',
'guid': '7dbd5b801e49ace0c8b3eba6b70c9ad6',
'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))