mirror of
https://github.com/wbt5/real-url.git
synced 2025-08-01 06:28:02 +08:00
更新
This commit is contained in:
parent
952ed5c2fb
commit
36f6764752
@ -3,7 +3,7 @@ import re
|
|||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
|
|
||||||
from ._173 import YiQiShan
|
from .yqs import YiQiShan
|
||||||
from .acfun import AcFun
|
from .acfun import AcFun
|
||||||
from .bilibili import Bilibili
|
from .bilibili import Bilibili
|
||||||
from .cc import CC
|
from .cc import CC
|
||||||
@ -21,6 +21,7 @@ from .look import Look
|
|||||||
from .pps import QiXiu
|
from .pps import QiXiu
|
||||||
from .qf import QF
|
from .qf import QF
|
||||||
from .zhanqi import ZhanQi
|
from .zhanqi import ZhanQi
|
||||||
|
from .yy import YY
|
||||||
|
|
||||||
__all__ = ['DanmakuClient']
|
__all__ = ['DanmakuClient']
|
||||||
|
|
||||||
@ -55,7 +56,8 @@ class DanmakuClient:
|
|||||||
'laifeng.com': LaiFeng,
|
'laifeng.com': LaiFeng,
|
||||||
'look.163.com': Look,
|
'look.163.com': Look,
|
||||||
'acfun.cn': AcFun,
|
'acfun.cn': AcFun,
|
||||||
'173.com': YiQiShan}.items():
|
'173.com': YiQiShan,
|
||||||
|
'yy.com': YY}.items():
|
||||||
if re.match(r'^(?:http[s]?://)?.*?%s/(.+?)$' % u, url):
|
if re.match(r'^(?:http[s]?://)?.*?%s/(.+?)$' % u, url):
|
||||||
self.__site = s
|
self.__site = s
|
||||||
self.__u = u
|
self.__u = u
|
||||||
@ -114,56 +116,77 @@ class DanmakuClient:
|
|||||||
await self.__dm_queue.put(m)
|
await self.__dm_queue.put(m)
|
||||||
count += 1
|
count += 1
|
||||||
|
|
||||||
async def init_ws_acfun(self, s):
|
async def init_ws_acfun(self):
|
||||||
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
||||||
await self.__ws.send_bytes(s.encode_packet('register'))
|
await self.__ws.send_bytes(self.__s.encode_packet('register'))
|
||||||
|
|
||||||
async def ping_acfun(self, s):
|
async def ping_acfun(self):
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
await self.__ws.send_bytes(s.encode_packet('ping'))
|
await self.__ws.send_bytes(self.__s.encode_packet('ping'))
|
||||||
|
|
||||||
async def keepalive_acfun(self, s):
|
async def keepalive_acfun(self):
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(50)
|
await asyncio.sleep(50)
|
||||||
await self.__ws.send_bytes(s.encode_packet('keepalive'))
|
await self.__ws.send_bytes(self.__s.encode_packet('keepalive'))
|
||||||
|
|
||||||
async def heartbeat_acfun(self, s):
|
async def heartbeat_acfun(self):
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(10)
|
await asyncio.sleep(10)
|
||||||
await self.__ws.send_bytes(s.encode_packet('ztlivecsheartbeat'))
|
await self.__ws.send_bytes(self.__s.encode_packet('ztlivecsheartbeat'))
|
||||||
|
|
||||||
async def fetch_danmaku_acfun(self, s):
|
async def fetch_danmaku_acfun(self):
|
||||||
count = 0
|
count = 0
|
||||||
async for msg in self.__ws:
|
async for msg in self.__ws:
|
||||||
self.__link_status = True
|
self.__link_status = True
|
||||||
ms = s.decode_packet(msg.data)
|
ms = self.__s.decode_packet(msg.data)
|
||||||
if count == 0:
|
if count == 0:
|
||||||
await self.__ws.send_bytes(s.encode_packet('ztlivecsenterroom'))
|
await self.__ws.send_bytes(self.__s.encode_packet('ztlivecsenterroom'))
|
||||||
count += 1
|
count += 1
|
||||||
for m in ms:
|
for m in ms:
|
||||||
await self.__dm_queue.put(m)
|
await self.__dm_queue.put(m)
|
||||||
|
|
||||||
async def init_ws_173(self, s):
|
async def init_ws_173(self):
|
||||||
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
||||||
await self.__ws.send_bytes(s.pack('startup'))
|
await self.__ws.send_bytes(self.__s.pack('startup'))
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
await self.__ws.send_bytes(s.pack('enterroomreq'))
|
await self.__ws.send_bytes(self.__s.pack('enterroomreq'))
|
||||||
|
|
||||||
async def tcphelloreq_173(self, s):
|
async def tcphelloreq_173(self):
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(10)
|
await asyncio.sleep(10)
|
||||||
await self.__ws.send_bytes(s.pack('tcphelloreq'))
|
await self.__ws.send_bytes(self.__s.pack('tcphelloreq'))
|
||||||
|
|
||||||
async def roomhelloreq_173(self, s):
|
async def roomhelloreq_173(self):
|
||||||
while True:
|
while True:
|
||||||
await asyncio.sleep(5)
|
await asyncio.sleep(5)
|
||||||
await self.__ws.send_bytes(s.pack('roomhelloreq'))
|
await self.__ws.send_bytes(self.__s.pack('roomhelloreq'))
|
||||||
|
|
||||||
async def fetch_danmaku_173(self, s):
|
async def fetch_danmaku_173(self):
|
||||||
async for msg in self.__ws:
|
async for msg in self.__ws:
|
||||||
self.__link_status = True
|
self.__link_status = True
|
||||||
ms = s.unpack(msg.data)
|
ms = self.__s.unpack(msg.data)
|
||||||
|
for m in ms:
|
||||||
|
await self.__dm_queue.put(m)
|
||||||
|
|
||||||
|
async def init_ws_yy(self):
|
||||||
|
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
||||||
|
await self.__ws.send_bytes(self.__s.LoginUDB())
|
||||||
|
|
||||||
|
async def heartbeat_yy(self):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(10)
|
||||||
|
await self.__ws.send_bytes(self.__s.pingAp())
|
||||||
|
|
||||||
|
async def fetch_danmaku_yy(self):
|
||||||
|
count = 0
|
||||||
|
async for msg in self.__ws:
|
||||||
|
self.__link_status = True
|
||||||
|
ms = self.__s.onProto(msg.data)
|
||||||
|
if count == 0:
|
||||||
|
await self.__ws.send_bytes(self.__s.loginAp())
|
||||||
|
await self.__ws.send_bytes(self.__s.joinServiceBc())
|
||||||
|
count += 1
|
||||||
for m in ms:
|
for m in ms:
|
||||||
await self.__dm_queue.put(m)
|
await self.__dm_queue.put(m)
|
||||||
|
|
||||||
@ -172,22 +195,30 @@ class DanmakuClient:
|
|||||||
await self.init_ws_huajiao()
|
await self.init_ws_huajiao()
|
||||||
elif self.__u == 'acfun.cn':
|
elif self.__u == 'acfun.cn':
|
||||||
rid = re.search(r'\d+', self.__url).group(0)
|
rid = re.search(r'\d+', self.__url).group(0)
|
||||||
s = self.__site(rid)
|
self.__s = self.__site(rid)
|
||||||
await self.init_ws_acfun(s)
|
await self.init_ws_acfun()
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
self.ping_acfun(s),
|
self.ping_acfun(),
|
||||||
self.fetch_danmaku_acfun(s),
|
self.fetch_danmaku_acfun(),
|
||||||
self.keepalive_acfun(s),
|
self.keepalive_acfun(),
|
||||||
self.heartbeat_acfun(s),
|
self.heartbeat_acfun(),
|
||||||
)
|
)
|
||||||
elif self.__u == '173.com':
|
elif self.__u == '173.com':
|
||||||
rid = self.__url.split('/')[-1]
|
rid = self.__url.split('/')[-1]
|
||||||
s = self.__site(rid)
|
self.__s = self.__site(rid)
|
||||||
await self.init_ws_173(s)
|
await self.init_ws_173()
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
self.fetch_danmaku_173(s),
|
self.fetch_danmaku_173(),
|
||||||
self.tcphelloreq_173(s),
|
self.tcphelloreq_173(),
|
||||||
self.roomhelloreq_173(s),
|
self.roomhelloreq_173(),
|
||||||
|
)
|
||||||
|
elif self.__u == 'yy.com':
|
||||||
|
rid = self.__url.split('/')[-1]
|
||||||
|
self.__s = self.__site(int(rid))
|
||||||
|
await self.init_ws_yy()
|
||||||
|
await asyncio.gather(
|
||||||
|
self.fetch_danmaku_yy(),
|
||||||
|
self.heartbeat_yy()
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
await self.init_ws()
|
await self.init_ws()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user