diff --git a/danmu/danmaku/longzhu.py b/danmu/danmaku/longzhu.py new file mode 100644 index 0000000..36de1ad --- /dev/null +++ b/danmu/danmaku/longzhu.py @@ -0,0 +1,37 @@ +import json +import aiohttp +import re + + +class LongZhu: + heartbeat = None + + @staticmethod + async def get_ws_info(url): + rid = url.split('/')[-1] + async with aiohttp.ClientSession() as session: + async with session.get('http://m.longzhu.com/' + rid) as resp: + res1 = await resp.text() + roomid = re.search(r'var roomId = (\d+);', res1).group(1) + async with session.get('http://idc-gw.longzhu.com/mbidc?roomId=' + roomid) as resp2: + res2 = json.loads(await resp2.text()) + ws_url = res2['data']['redirect_to'] + '?room_id=' + roomid + return ws_url, None + + @staticmethod + def decode_msg(message): + msgs = [] + msg = {'name': '', 'content': '', 'msg_type': 'other'} + message = json.loads(message) + type_ = message['type'] + # type_ == 'gift' 礼物 + if type_ == 'chat': + msg['name'] = message['msg']['user']['username'] + msg['content'] = (message['msg']['content']).strip() + msg['msg_type'] = 'danmaku' + elif type_ == 'commonjoin': + msg['name'] = message['msg']['user']['username'] + msg['content'] = message['msg']['userMessage'] + msg['msg_type'] = 'danmaku' + msgs.append(msg.copy()) + return msgs