mirror of
https://github.com/wbt5/real-url.git
synced 2025-08-01 14:48:01 +08:00
74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
import hashlib
|
||
import urllib.parse
|
||
import json
|
||
|
||
|
||
class QiXiu:
|
||
heartbeat = None
|
||
|
||
@staticmethod
|
||
async def get_ws_info(url):
|
||
rid = url.split('/')[-1]
|
||
s = bytes([57, 77, 83, 73, 53, 86, 85, 71, 50, 81, 74, 80, 66, 52, 78, 54, 68, 48, 81,
|
||
83, 89, 87, 69, 72, 67, 90, 83, 75, 84, 49, 77, 50, 84, 65, 75, 88]).decode('utf-8')
|
||
# ua = 'User-Agent'
|
||
# ak = deviceid = md5(str(int(time.time() * 1e3)) + ua + '0000')
|
||
ak = deviceid = '118d2ae703e62992263e6741afbb5627'
|
||
e = {
|
||
'ag': 1,
|
||
'ak': ak,
|
||
'at': 3,
|
||
'd': deviceid,
|
||
'n': 1,
|
||
'p': 1,
|
||
'r': rid,
|
||
'v': '1.01.0801'
|
||
}
|
||
i = ''
|
||
for k, v in e.items():
|
||
i += '{}={}|'.format(k, str(v))
|
||
e['sg'] = hashlib.md5((i + s).encode('utf-8')).hexdigest()
|
||
ws_url = 'ws://qx-ws.iqiyi.com/ws?' + urllib.parse.urlencode(e)
|
||
return ws_url, None
|
||
|
||
@staticmethod
|
||
def decode_msg(data):
|
||
message = json.loads(data)
|
||
msgs = []
|
||
msg = {'name': '', 'content': '', 'msg_type': 'other'}
|
||
for ms in message:
|
||
m = ms['ct']
|
||
type_ = ms['t']
|
||
# 200001:进场消息
|
||
# 300001:聊天信息
|
||
# 102001:礼物
|
||
# 1100002:礼物
|
||
# 400001:人气值
|
||
# 5000010:升级
|
||
# 700095:live_score
|
||
# 700091:排名
|
||
# 其他:系统消息
|
||
if type_ == 300001:
|
||
msg['name'] = m['op_userInfo']['nick_name']
|
||
msg['content'] = m['msg']
|
||
msg['msg_type'] = 'danmaku'
|
||
elif type_ == 102001:
|
||
msg['name'] = m['op_userInfo']['nick_name']
|
||
num = m['op_info']['num']
|
||
gift = m['op_info']['name']
|
||
msg['content'] = '送出{}个{}'.format(num, gift)
|
||
msg['msg_type'] = 'danmaku'
|
||
elif type_ in [200001, 1100002, 110001, 3019, 3022, 3002, 3024]:
|
||
msg['name'] = 'SYS'
|
||
info = m['op_info'].get('public_chat_msg', 0)
|
||
if not info:
|
||
info = m['op_info']['roll_chat_msg']
|
||
content = ''
|
||
items = info['items']
|
||
for item in items:
|
||
content += item.get('content', '')
|
||
msg['content'] = content
|
||
msg['msg_type'] = 'danmaku'
|
||
msgs.append(msg.copy())
|
||
return msgs
|