1
0
mirror of https://github.com/wbt5/real-url.git synced 2025-08-01 14:48:01 +08:00
zhibo-url/danmu/danmaku/laifeng.py
2020-07-19 22:17:36 +08:00

54 lines
1.9 KiB
Python

import aiohttp
import json
import time
class LaiFeng:
heartbeat = '2::'
heartbeatInterval = 30
@staticmethod
async def get_ws_info(url):
rid = url.split('/')[-1]
async with aiohttp.ClientSession() as session:
async with session.get('http://v.laifeng.com/') as resp:
imk = dict(resp.cookies)['imk'].value
args = {
'name': 'enter',
'args': [{
'token': imk.replace('%3D', '='),
'yktk': '',
'uid': '2082628924',
'isPushHis': '1',
'roomid': rid,
'endpointtype': 'ct_,dt_1_1003|0|_{}|CTaXF+oKpB4CAatxtZHBQchJ'.format(time.time() * 1e3)
}]
}
reg_data = '5:::' + json.dumps(args)
return 'ws://normal01.chatroom.laifeng.com/socket.io/1/websocket/', [reg_data]
@staticmethod
def decode_msg(message):
type_ = message[0]
msgs = []
msg = {'name': '', 'content': '', 'msg_type': 'other'}
if type_ == '5':
data = json.loads(message[4:])
name = data.get('name', 0)
args = data['args']
for arg in args:
if name == 'enterMessage': # 入场信息
msg['name'] = 'SYS'
msg['content'] = arg['body']['n'] + ' 进入频道'
msg['msg_type'] = 'danmaku'
elif name == 'globalHornMessage': # 系统消息
msg['name'] = 'SYS'
msg['content'] = arg['body']['m']
msg['msg_type'] = 'danmaku'
elif name == 'chatMessage': # 弹幕
msg['name'] = arg['body']['n']
msg['content'] = arg['body']['m']
msg['msg_type'] = 'danmaku'
msgs.append(msg.copy())
return msgs