mirror of
https://github.com/wbt5/real-url.git
synced 2025-07-28 03:20:31 +08:00
新增2个平台
This commit is contained in:
parent
ed4c68a1ec
commit
47e8538164
@ -1,23 +1,26 @@
|
|||||||
import aiohttp
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
import aiohttp
|
||||||
|
|
||||||
|
from ._173 import YiQiShan
|
||||||
|
from .acfun import AcFun
|
||||||
from .bilibili import Bilibili
|
from .bilibili import Bilibili
|
||||||
|
from .cc import CC
|
||||||
from .douyu import Douyu
|
from .douyu import Douyu
|
||||||
from .huya import Huya
|
|
||||||
from .kuaishou import KuaiShou
|
|
||||||
from .huomao import HuoMao
|
|
||||||
from .egame import eGame
|
from .egame import eGame
|
||||||
from .huajiao import HuaJiao
|
from .huajiao import HuaJiao
|
||||||
|
from .huomao import HuoMao
|
||||||
|
from .huya import Huya
|
||||||
from .inke import Inke
|
from .inke import Inke
|
||||||
from .cc import CC
|
from .kuaishou import KuaiShou
|
||||||
from .kugou import KuGou
|
from .kugou import KuGou
|
||||||
from .zhanqi import ZhanQi
|
from .laifeng import LaiFeng
|
||||||
from .longzhu import LongZhu
|
from .longzhu import LongZhu
|
||||||
|
from .look import Look
|
||||||
from .pps import QiXiu
|
from .pps import QiXiu
|
||||||
from .qf import QF
|
from .qf import QF
|
||||||
from .laifeng import LaiFeng
|
from .zhanqi import ZhanQi
|
||||||
from .look import Look
|
|
||||||
|
|
||||||
__all__ = ['DanmakuClient']
|
__all__ = ['DanmakuClient']
|
||||||
|
|
||||||
@ -50,14 +53,16 @@ class DanmakuClient:
|
|||||||
'pps.tv': QiXiu,
|
'pps.tv': QiXiu,
|
||||||
'qf.56.com': QF,
|
'qf.56.com': QF,
|
||||||
'laifeng.com': LaiFeng,
|
'laifeng.com': LaiFeng,
|
||||||
'look.163.com': Look}.items():
|
'look.163.com': Look,
|
||||||
|
'acfun.cn': AcFun,
|
||||||
|
'173.com': YiQiShan}.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
|
||||||
break
|
break
|
||||||
if self.__site is None:
|
if self.__site is None:
|
||||||
print('Invalid link!')
|
print('Invalid link!')
|
||||||
exit
|
exit()
|
||||||
self.__hs = aiohttp.ClientSession()
|
self.__hs = aiohttp.ClientSession()
|
||||||
|
|
||||||
async def init_ws(self):
|
async def init_ws(self):
|
||||||
@ -108,14 +113,89 @@ class DanmakuClient:
|
|||||||
for m in ms:
|
for m in ms:
|
||||||
await self.__dm_queue.put(m)
|
await self.__dm_queue.put(m)
|
||||||
count += 1
|
count += 1
|
||||||
await self.heartbeats()
|
|
||||||
|
async def init_ws_acfun(self, s):
|
||||||
|
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
||||||
|
await self.__ws.send_bytes(s.encode_packet('register'))
|
||||||
|
|
||||||
|
async def ping_acfun(self, s):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
await self.__ws.send_bytes(s.encode_packet('ping'))
|
||||||
|
|
||||||
|
async def keepalive_acfun(self, s):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(50)
|
||||||
|
await self.__ws.send_bytes(s.encode_packet('keepalive'))
|
||||||
|
|
||||||
|
async def heartbeat_acfun(self, s):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(10)
|
||||||
|
await self.__ws.send_bytes(s.encode_packet('ztlivecsheartbeat'))
|
||||||
|
|
||||||
|
async def fetch_danmaku_acfun(self, s):
|
||||||
|
count = 0
|
||||||
|
async for msg in self.__ws:
|
||||||
|
self.__link_status = True
|
||||||
|
ms = s.decode_packet(msg.data)
|
||||||
|
if count == 0:
|
||||||
|
await self.__ws.send_bytes(s.encode_packet('ztlivecsenterroom'))
|
||||||
|
count += 1
|
||||||
|
for m in ms:
|
||||||
|
await self.__dm_queue.put(m)
|
||||||
|
|
||||||
|
async def init_ws_173(self, s):
|
||||||
|
self.__ws = await self.__hs.ws_connect(self.__site.ws_url)
|
||||||
|
await self.__ws.send_bytes(s.pack('startup'))
|
||||||
|
await asyncio.sleep(1)
|
||||||
|
await self.__ws.send_bytes(s.pack('enterroomreq'))
|
||||||
|
|
||||||
|
async def tcphelloreq_173(self, s):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(10)
|
||||||
|
await self.__ws.send_bytes(s.pack('tcphelloreq'))
|
||||||
|
|
||||||
|
async def roomhelloreq_173(self, s):
|
||||||
|
while True:
|
||||||
|
await asyncio.sleep(5)
|
||||||
|
await self.__ws.send_bytes(s.pack('roomhelloreq'))
|
||||||
|
|
||||||
|
async def fetch_danmaku_173(self, s):
|
||||||
|
async for msg in self.__ws:
|
||||||
|
self.__link_status = True
|
||||||
|
ms = s.unpack(msg.data)
|
||||||
|
for m in ms:
|
||||||
|
await self.__dm_queue.put(m)
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
if self.__u == 'huajiao.com':
|
if self.__u == 'huajiao.com':
|
||||||
await self.init_ws_huajiao()
|
await self.init_ws_huajiao()
|
||||||
|
elif self.__u == 'acfun.cn':
|
||||||
|
rid = re.search(r'\d+', self.__url).group(0)
|
||||||
|
s = self.__site(rid)
|
||||||
|
await self.init_ws_acfun(s)
|
||||||
|
await asyncio.gather(
|
||||||
|
self.ping_acfun(s),
|
||||||
|
self.fetch_danmaku_acfun(s),
|
||||||
|
self.keepalive_acfun(s),
|
||||||
|
self.heartbeat_acfun(s),
|
||||||
|
)
|
||||||
|
elif self.__u == '173.com':
|
||||||
|
rid = self.__url.split('/')[-1]
|
||||||
|
s = self.__site(rid)
|
||||||
|
await self.init_ws_173(s)
|
||||||
|
await asyncio.gather(
|
||||||
|
self.fetch_danmaku_173(s),
|
||||||
|
self.tcphelloreq_173(s),
|
||||||
|
self.roomhelloreq_173(s),
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
await self.init_ws()
|
await self.init_ws()
|
||||||
await asyncio.gather(
|
await asyncio.gather(
|
||||||
self.heartbeats(),
|
self.heartbeats(),
|
||||||
self.fetch_danmaku(),
|
self.fetch_danmaku(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def stop(self):
|
||||||
|
self.__stop = True
|
||||||
|
await self.__hs.close()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user