1
0
mirror of https://github.com/wbt5/real-url.git synced 2025-08-01 14:48:01 +08:00
2020-07-21 20:34:46 +08:00

113 lines
4.1 KiB
Python

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import aiohttp
import json
import base64
class Look:
heartbeat = '2::'
heartbeatInterval = 30
@staticmethod
def aes_(t, key):
t = t.encode('utf-8')
t = pad(t, AES.block_size)
key = key.encode()
iv = b'0102030405060708'
mode = AES.MODE_CBC
c = AES.new(key, mode, iv)
res = c.encrypt(t)
return base64.b64encode(res).decode('utf-8')
@staticmethod
async def get_ws_info(url):
rid = url.split('=')[-1]
async with aiohttp.ClientSession() as session:
async with session.get('https://weblink10.netease.im/socket.io/1/') as resp:
res = await resp.text()
sessid = res.split(':')[0]
ws_url = 'wss://weblink10.netease.im/socket.io/1/websocket/' + sessid
room = {
'liveRoomNo': rid
}
c = json.dumps(room, separators=(',', ':'))
data = {
'params': Look.aes_(Look.aes_(c, '0CoJUm6Qyw8W8jud'), 'dV00kZnm4Au69cp2'),
'encSecKey': 'e08bda29630b9a9bbf9552a1e5f889972aedfe6bc4e695b60d566294043431c60e42487153c6e0df42df0aa9d40c739552d8d8ee58d9acbcab8f4ae0df997a787eefcc56bdcd12fd2f1e41bdb5f9db240b3e10b6bd762fd207853af4c78dddf8254cf6ff83599120bd041c3e7dfb3faea1cd2886bd2c40de0981a11ae2af2a33 '
}
async with session.post('https://api.look.163.com/weapi/livestream/room/get/v3', data=data) as resp:
res = await resp.json()
roomid = res['data']['roomInfo']['roomId']
args = {
'SID': 13,
'CID': 2,
'SER': 1,
'Q': [{
't': 'byte',
'v': 1
}, {
't': 'Property',
'v': {
'1': '3a6a3e48f6854dfa4e4464f3bdaec3b4',
'2': '',
'3': '1713a7e3e1e4d7b99fe5bcff2fe7e178',
'5': roomid,
'8': 0,
'20': '',
'21': ' ',
'26': '',
'38': 1
}
}, {
't': 'Property',
'v': {
'4': '',
'6': '47',
'8': 1,
'9': 1,
'13': '1713a7e3e1e4d7b99fe5bcff2fe7e178',
'18': '3a6a3e48f6854dfa4e4464f3bdaec3b4',
'19': '',
'24': '',
'26': '',
'1000': ''
}
}
]
}
reg_data = '3:::' + json.dumps(args, separators=(',', ':'))
return ws_url, [reg_data]
@staticmethod
def decode_msg(message):
type_ = message[0]
msgs = []
msg = {'name': '', 'content': '', 'msg_type': 'other'}
if type_ == '3':
data = json.loads(message[4:])
if data['cid'] == 10:
body = data['r'][1]['body']
body = body[0]
if body['2'] == '100':
info = json.loads(body['4'])
if info['type'] == 114: # 入场信息
msg['name'] = info['content']['user']['nickName']
msg['content'] = ' 进入了直播间'
msg['msg_type'] = 'danmaku'
elif info['type'] == 102: # 礼物
msg['name'] = info['content']['user']['nickName']
number = info['content']['number']
giftname = info['content']['giftName']
msg['content'] = ' 送了{}{}'.format(giftname, number)
msg['msg_type'] = 'danmaku'
elif body['2'] == '0': # 发言
info = json.loads(body['4'])
msg['name'] = info['content']['user']['nickname']
msg['content'] = body['3']
msg['msg_type'] = 'danmaku'
msgs.append(msg.copy())
return msgs