From a9fd23df9befc706db772b44ea334726d87aa5a8 Mon Sep 17 00:00:00 2001
From: ForgQi <34411314+ForgQi@users.noreply.github.com>
Date: Wed, 1 Mar 2023 02:09:44 +0800
Subject: [PATCH] Reduce unnecessary levels
---
biliup/engine/download.py | 22 ++-
biliup/plugins/Danmaku/__init__.py | 136 ++++++++++++++++++
biliup/plugins/Danmaku/{src => }/bilibili.py | 0
biliup/plugins/Danmaku/danmaku_main.py | 53 -------
biliup/plugins/Danmaku/{src => }/douyu.py | 0
biliup/plugins/Danmaku/{src => }/huya.py | 0
biliup/plugins/Danmaku/src/__init__.py | 136 ------------------
.../Danmaku/{src => }/tars/EndpointF.py | 2 +-
.../plugins/Danmaku/{src => }/tars/QueryF.py | 0
.../Danmaku/{src => }/tars/__TimeoutQueue.py | 0
.../Danmaku/{src => }/tars/__adapterproxy.py | 0
.../plugins/Danmaku/{src => }/tars/__async.py | 6 +-
.../Danmaku/{src => }/tars/__init__.py | 0
.../Danmaku/{src => }/tars/__logger.py | 0
.../Danmaku/{src => }/tars/__packet.py | 0
.../plugins/Danmaku/{src => }/tars/__rpc.py | 0
.../Danmaku/{src => }/tars/__servantproxy.py | 12 +-
.../plugins/Danmaku/{src => }/tars/__tars.py | 0
.../plugins/Danmaku/{src => }/tars/__trans.py | 0
.../plugins/Danmaku/{src => }/tars/__tup.py | 0
.../plugins/Danmaku/{src => }/tars/__util.py | 0
biliup/plugins/Danmaku/{src => }/tars/core.py | 8 +-
.../Danmaku/{src => }/tars/exception.py | 0
.../{src => }/tars/tars/EndpointF.tars | 0
.../Danmaku/{src => }/tars/tars/QueryF.tars | 0
.../Danmaku/{src => }/tars/tars/__init__.py | 0
biliup/plugins/bilibili.py | 26 ++--
biliup/plugins/douyu.py | 24 ++--
biliup/plugins/huya.py | 18 +--
29 files changed, 192 insertions(+), 251 deletions(-)
rename biliup/plugins/Danmaku/{src => }/bilibili.py (100%)
delete mode 100644 biliup/plugins/Danmaku/danmaku_main.py
rename biliup/plugins/Danmaku/{src => }/douyu.py (100%)
rename biliup/plugins/Danmaku/{src => }/huya.py (100%)
delete mode 100644 biliup/plugins/Danmaku/src/__init__.py
rename biliup/plugins/Danmaku/{src => }/tars/EndpointF.py (97%)
rename biliup/plugins/Danmaku/{src => }/tars/QueryF.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__TimeoutQueue.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__adapterproxy.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__async.py (96%)
rename biliup/plugins/Danmaku/{src => }/tars/__init__.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__logger.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__packet.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__rpc.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__servantproxy.py (96%)
rename biliup/plugins/Danmaku/{src => }/tars/__tars.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__trans.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__tup.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/__util.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/core.py (87%)
rename biliup/plugins/Danmaku/{src => }/tars/exception.py (100%)
rename biliup/plugins/Danmaku/{src => }/tars/tars/EndpointF.tars (100%)
rename biliup/plugins/Danmaku/{src => }/tars/tars/QueryF.tars (100%)
rename biliup/plugins/Danmaku/{src => }/tars/tars/__init__.py (100%)
diff --git a/biliup/engine/download.py b/biliup/engine/download.py
index 8f3696d..4f5e72e 100644
--- a/biliup/engine/download.py
+++ b/biliup/engine/download.py
@@ -1,16 +1,16 @@
+import asyncio
import logging
import os
import re
import subprocess
import sys
+import threading
import time
+from urllib.parse import urlparse
import stream_gears
from biliup.config import config
-from urllib.parse import urlparse
-
-from biliup.plugins.Danmaku.danmaku_main import Danmaku
logger = logging.getLogger('biliup')
@@ -63,11 +63,13 @@ class DownloadBase:
else:
filename = f'{self.fname}%Y-%m-%dT%H_%M_%S'
filename = get_valid_filename(filename)
+ fmtname = time.strftime(filename.encode("unicode-escape").decode()).encode().decode("unicode-escape")
+ threading.Thread(target=asyncio.run, args=(self.danmaku_download_start(fmtname),)).start()
if self.downloader == 'stream-gears':
stream_gears_download(self.raw_stream_url, self.fake_headers, filename, config.get('segment_time'),
config.get('file_size'))
else:
- self.ffmpeg_download(filename)
+ self.ffmpeg_download(fmtname)
def ffmpeg_download(self, filename):
default_input_args = ['-headers', ''.join('%s: %s\r\n' % x for x in self.fake_headers.items()),
@@ -81,13 +83,12 @@ class DownloadBase:
'-c', 'copy', '-f', self.suffix]
if config.get('segment_time'):
args += ['-f', 'segment',
- f'{(time.strftime(filename).encode("unicode-escape").decode()).encode().decode("unicode-escape")} part-%03d.{self.suffix}']
+ f'{filename} part-%03d.{self.suffix}']
else:
args += [
- f'{(time.strftime(filename).encode("unicode-escape").decode()).encode().decode("unicode-escape")}.{self.suffix}.part']
+ f'{filename}.{self.suffix}.part']
proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- self.danmaku_download_start(filename)
try:
with proc.stdout as stdout:
for line in iter(stdout.readline, b''): # b'\n'-separated lines
@@ -95,18 +96,13 @@ class DownloadBase:
print(decode_line, end='', file=sys.stderr)
logger.debug(decode_line.rstrip())
retval = proc.wait()
- self.danmaku_download_stop()
except KeyboardInterrupt:
- self.danmaku_download_stop()
if sys.platform != 'win32':
proc.communicate(b'q')
raise
return retval
- def danmaku_download_start(self, filename):
- pass
-
- def danmaku_download_stop(self):
+ async def danmaku_download_start(self, filename):
pass
def run(self):
diff --git a/biliup/plugins/Danmaku/__init__.py b/biliup/plugins/Danmaku/__init__.py
index 8b13789..ce5bf64 100644
--- a/biliup/plugins/Danmaku/__init__.py
+++ b/biliup/plugins/Danmaku/__init__.py
@@ -1 +1,137 @@
+# 部分弹幕功能代码来自项目:https://github.com/IsoaSFlus/danmaku,感谢大佬
+# 快手弹幕代码来源及思路:https://github.com/py-wuhao/ks_barrage,感谢大佬
+# 仅抓取用户弹幕,不包括入场提醒、礼物赠送等。
+import asyncio
+import os
+import re
+import ssl
+import time
+
+import lxml.etree as etree
+import aiofiles
+import aiohttp
+
+from biliup.plugins.Danmaku.douyu import Douyu
+from biliup.plugins.Danmaku.huya import Huya
+from biliup.plugins.Danmaku.bilibili import Bilibili
+
+__all__ = ['DanmakuClient']
+
+
+class DanmakuClient:
+ def __init__(self, url, filename):
+ self.__starttime = time.time()
+ self.__filename = filename
+ self.__url = ''
+ self.__site = None
+ self.__hs = None
+ self.__ws = None
+ self.__stop = False
+ self.__dm_queue = None
+ self.__link_status = True
+
+ if 'http://' == url[:7] or 'https://' == url[:8]:
+ self.__url = url
+ else:
+ self.__url = 'http://' + url
+ for u, s in {'douyu.com': Douyu, 'huya.com': Huya, 'live.bilibili.com': Bilibili}.items():
+ if re.match(r'^(?:http[s]?://)?.*?%s/(.+?)$' % u, url):
+ self.__site = s
+ self.__u = u
+ break
+ if self.__site is None:
+ print('Invalid link!')
+ exit()
+
+ async def init_ws(self):
+ ws_url, reg_datas = await self.__site.get_ws_info(self.__url)
+ ctx = ssl.create_default_context()
+ ctx.set_ciphers('DEFAULT')
+ self.__ws = await self.__hs.ws_connect(ws_url, ssl_context=ctx)
+ if reg_datas:
+ for reg_data in reg_datas:
+ await self.__ws.send_bytes(reg_data)
+ if not os.path.exists(self.__filename):
+ async with aiofiles.open(self.__filename, mode='w') as f:
+ await f.write("\n"
+ "\n"
+ ""
+ )
+
+ async def heartbeats(self):
+ while not self.__stop and self.__site.heartbeat:
+ await asyncio.sleep(self.__site.heartbeatInterval)
+ try:
+ await self.__ws.send_bytes(self.__site.heartbeat)
+ except Exception as Error:
+ print(f"捕获到异常:{Error}")
+ await self.__hs.close()
+
+ async def fetch_danmaku(self):
+ # while not self.__stop:
+ await asyncio.sleep(1)
+ await self.init_ws()
+ await asyncio.sleep(1)
+ async for msg in self.__ws:
+ if self.__stop:
+ await self.__dm_queue.put(None)
+ return
+ self.__link_status = True
+ ms = self.__site.decode_msg(msg.data)
+ for m in ms:
+ await self.__dm_queue.put(m)
+
+ async def print_danmaku(self):
+ parser = etree.XMLParser(recover=True)
+ tree = etree.parse(self.__filename, parser=parser)
+ root = tree.getroot()
+ msg_i = 0
+ msg_col = {'0': '16777215', '1': '16717077', '2': '2000880', '3': '8046667', '4': '16744192', '5': '10172916',
+ '6': '16738740'}
+ while not self.__stop:
+ try:
+ m = await self.__dm_queue.get()
+ if m is None:
+ return
+ # print(m)
+ if m['msg_type'] == 'danmaku':
+ d = etree.SubElement(root, 'd')
+ if 'col' in m:
+ color = msg_col[m["col"]]
+ elif 'color' in m:
+ color = m["color"]
+ # else:
+ # color = '16777215'
+ msg_time = format(time.time() - self.__starttime, '.3f')
+ d.set('p', f"{msg_time},1,25,{color},0,0,0,0")
+ d.text = m["content"]
+
+ if msg_i >= 5:
+ etree.indent(root, "\t")
+ tree.write(self.__filename, encoding="UTF-8", xml_declaration=True, pretty_print=True)
+ msg_i = 0
+ else:
+ msg_i = msg_i + 1
+
+ except Exception as Error:
+ print(f"捕获到异常:{Error}")
+
+ async def start(self):
+ self.__dm_queue = asyncio.Queue()
+ self.__hs = aiohttp.ClientSession()
+ await self.init_ws()
+ await asyncio.gather(
+ self.heartbeats(),
+ self.fetch_danmaku(),
+ self.print_danmaku(),
+ )
+ print("弹幕录制结束")
+
+ def stop(self):
+ self.__stop = True
+
+
+
+# 虎牙直播:https://www.huya.com/lpl
+# 斗鱼直播:https://www.douyu.com/9999
\ No newline at end of file
diff --git a/biliup/plugins/Danmaku/src/bilibili.py b/biliup/plugins/Danmaku/bilibili.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/bilibili.py
rename to biliup/plugins/Danmaku/bilibili.py
diff --git a/biliup/plugins/Danmaku/danmaku_main.py b/biliup/plugins/Danmaku/danmaku_main.py
deleted file mode 100644
index 582e0b3..0000000
--- a/biliup/plugins/Danmaku/danmaku_main.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# 部分弹幕功能代码来自项目:https://github.com/IsoaSFlus/danmaku,感谢大佬
-# 快手弹幕代码来源及思路:https://github.com/py-wuhao/ks_barrage,感谢大佬
-# 仅抓取用户弹幕,不包括入场提醒、礼物赠送等。
-
-import asyncio
-import queue
-import threading
-import time
-from concurrent.futures import ThreadPoolExecutor
-
-from biliup.plugins.Danmaku import src
-
-# stop_queue = asyncio.Queue()
-# url_o = ''
-# filename = ''
-
-
-# def thread_danmaku(loop):
-# asyncio.set_event_loop(loop)
-# dmc = src.DanmakuClient(url_o, stop_queue, filename)
-# loop.run_until_complete(dmc.start())
-#
-#
-# async def danmaku_main(url):
-# global url_o
-# url_o = url
-# executor1 = ThreadPoolExecutor(max_workers=1)
-# loop = asyncio.new_event_loop()
-# loop.run_in_executor(executor1, thread_danmaku, loop)
-# input("输入回车停止运行:\n")
-# await stop_queue.put(True)
-
-
-class Danmaku(threading.Thread):
- def __init__(self, filename, url):
- threading.Thread.__init__(self)
- self.stop_queue = asyncio.Queue()
- self.url_ = url
- self.filename = f"{time.strftime(filename)}.xml"
-
- def run(self):
- loop = asyncio.new_event_loop()
- asyncio.set_event_loop(loop)
- dmc = src.DanmakuClient(self.url_, self.filename, self.stop_queue)
- loop.create_task(dmc.start())
- loop.run_forever()
-
- async def stop(self):
- await self.stop_queue.put(True)
-
-
-# 虎牙直播:https://www.huya.com/lpl
-# 斗鱼直播:https://www.douyu.com/9999
diff --git a/biliup/plugins/Danmaku/src/douyu.py b/biliup/plugins/Danmaku/douyu.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/douyu.py
rename to biliup/plugins/Danmaku/douyu.py
diff --git a/biliup/plugins/Danmaku/src/huya.py b/biliup/plugins/Danmaku/huya.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/huya.py
rename to biliup/plugins/Danmaku/huya.py
diff --git a/biliup/plugins/Danmaku/src/__init__.py b/biliup/plugins/Danmaku/src/__init__.py
deleted file mode 100644
index 32b79b4..0000000
--- a/biliup/plugins/Danmaku/src/__init__.py
+++ /dev/null
@@ -1,136 +0,0 @@
-import asyncio
-import json
-import os
-import queue
-import re
-import ssl
-import time
-
-import lxml.etree as etree
-import aiofiles
-import aiohttp
-
-from .douyu import Douyu
-from .huya import Huya
-from .bilibili import Bilibili
-
-__all__ = ['DanmakuClient']
-
-
-class DanmakuClient:
- def __init__(self, url, filename, stop_queue):
- self.__starttime = time.time()
- self.__filename = filename
- self.__url = ''
- self.__site = None
- self.__hs = None
- self.__ws = None
- self.__stop = False
- self.__dm_queue = asyncio.Queue()
- self.__link_status = True
- self.__stop_queue = stop_queue
-
- if 'http://' == url[:7] or 'https://' == url[:8]:
- self.__url = url
- else:
- self.__url = 'http://' + url
- for u, s in {'douyu.com': Douyu, 'huya.com': Huya, 'live.bilibili.com': Bilibili}.items():
- if re.match(r'^(?:http[s]?://)?.*?%s/(.+?)$' % u, url):
- self.__site = s
- self.__u = u
- break
- if self.__site is None:
- print('Invalid link!')
- exit()
- self.__hs = aiohttp.ClientSession()
-
- async def init_ws(self):
- ws_url, reg_datas = await self.__site.get_ws_info(self.__url)
- ctx = ssl.create_default_context()
- ctx.set_ciphers('DEFAULT')
- self.__ws = await self.__hs.ws_connect(ws_url, ssl_context=ctx)
- if reg_datas:
- for reg_data in reg_datas:
- await self.__ws.send_bytes(reg_data)
- if not os.path.exists(self.__filename):
- async with aiofiles.open(self.__filename, mode='w') as f:
- await f.write("\n"
- "\n"
- ""
- )
-
- async def heartbeats(self):
- while not self.__stop and self.__site.heartbeat:
- await asyncio.sleep(self.__site.heartbeatInterval)
- try:
- await self.__ws.send_bytes(self.__site.heartbeat)
- except Exception as Error:
- print(f"捕获到异常:{Error}")
-
- async def fetch_danmaku(self):
- while not self.__stop:
- async for msg in self.__ws:
- self.__link_status = True
- ms = self.__site.decode_msg(msg.data)
- for m in ms:
- await self.__dm_queue.put(m)
- await asyncio.sleep(1)
- await self.init_ws()
- await asyncio.sleep(1)
-
- async def print_danmaku(self):
- parser = etree.XMLParser(recover=True)
- tree = etree.parse(self.__filename, parser=parser)
- root = tree.getroot()
- msg_i = 0
- msg_col = {'0': '16777215', '1': '16717077', '2': '2000880', '3': '8046667', '4': '16744192', '5': '10172916',
- '6': '16738740'}
- while not self.__stop:
- try:
- m = await self.__dm_queue.get()
- # print(m)
- if m['msg_type'] == 'danmaku':
- d = etree.SubElement(root, 'd')
- if 'col' in m:
- color = msg_col[m["col"]]
- elif 'color' in m:
- color = m["color"]
- # else:
- # color = '16777215'
- msg_time = format(time.time() - self.__starttime, '.3f')
- d.set('p', f"{msg_time},1,25,{color},0,0,0,0")
- d.text = m["content"]
-
- if msg_i >= 5:
- etree.indent(root, "\t")
- tree.write(self.__filename, encoding="UTF-8", xml_declaration=True, pretty_print=True)
- msg_i = 0
- else:
- msg_i = msg_i + 1
-
- except Exception as Error:
- print(f"捕获到异常:{Error}")
-
- async def start(self):
- await self.init_ws()
- await asyncio.gather(
- self.heartbeats(),
- self.fetch_danmaku(),
- self.print_danmaku(),
- self.stop_check(),
- )
-
- async def stop(self):
- await self.__hs.close()
- self.__stop = True
-
- async def stop_check(self):
- while True:
- await asyncio.sleep(1)
- try:
- stop_tag = self.__stop_queue.get_nowait()
- if stop_tag:
- await self.stop()
- break
- except asyncio.QueueEmpty:
- pass
diff --git a/biliup/plugins/Danmaku/src/tars/EndpointF.py b/biliup/plugins/Danmaku/tars/EndpointF.py
similarity index 97%
rename from biliup/plugins/Danmaku/src/tars/EndpointF.py
rename to biliup/plugins/Danmaku/tars/EndpointF.py
index 9ea27bb..4d61b12 100644
--- a/biliup/plugins/Danmaku/src/tars/EndpointF.py
+++ b/biliup/plugins/Danmaku/tars/EndpointF.py
@@ -13,7 +13,7 @@
# specific language governing permissions and limitations under the License.
#
-from biliup.plugins.Danmaku.src.tars.core import tarscore
+from biliup.plugins.Danmaku.tars.core import tarscore
class EndpointF(tarscore.struct):
diff --git a/biliup/plugins/Danmaku/src/tars/QueryF.py b/biliup/plugins/Danmaku/tars/QueryF.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/QueryF.py
rename to biliup/plugins/Danmaku/tars/QueryF.py
diff --git a/biliup/plugins/Danmaku/src/tars/__TimeoutQueue.py b/biliup/plugins/Danmaku/tars/__TimeoutQueue.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__TimeoutQueue.py
rename to biliup/plugins/Danmaku/tars/__TimeoutQueue.py
diff --git a/biliup/plugins/Danmaku/src/tars/__adapterproxy.py b/biliup/plugins/Danmaku/tars/__adapterproxy.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__adapterproxy.py
rename to biliup/plugins/Danmaku/tars/__adapterproxy.py
diff --git a/biliup/plugins/Danmaku/src/tars/__async.py b/biliup/plugins/Danmaku/tars/__async.py
similarity index 96%
rename from biliup/plugins/Danmaku/src/tars/__async.py
rename to biliup/plugins/Danmaku/tars/__async.py
index 5bb0b01..5ae90a8 100644
--- a/biliup/plugins/Danmaku/src/tars/__async.py
+++ b/biliup/plugins/Danmaku/tars/__async.py
@@ -27,9 +27,9 @@ import threading
from urllib3.connectionpool import xrange
-from biliup.plugins.Danmaku.src.tars.__logger import tarsLogger
-from biliup.plugins.Danmaku.src.tars.__packet import ResponsePacket
-from biliup.plugins.Danmaku.src.tars.__servantproxy import ServantProxy
+from biliup.plugins.Danmaku.tars.__logger import tarsLogger
+from biliup.plugins.Danmaku.tars.__packet import ResponsePacket
+from biliup.plugins.Danmaku.tars.__servantproxy import ServantProxy
class AsyncProcThread:
diff --git a/biliup/plugins/Danmaku/src/tars/__init__.py b/biliup/plugins/Danmaku/tars/__init__.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__init__.py
rename to biliup/plugins/Danmaku/tars/__init__.py
diff --git a/biliup/plugins/Danmaku/src/tars/__logger.py b/biliup/plugins/Danmaku/tars/__logger.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__logger.py
rename to biliup/plugins/Danmaku/tars/__logger.py
diff --git a/biliup/plugins/Danmaku/src/tars/__packet.py b/biliup/plugins/Danmaku/tars/__packet.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__packet.py
rename to biliup/plugins/Danmaku/tars/__packet.py
diff --git a/biliup/plugins/Danmaku/src/tars/__rpc.py b/biliup/plugins/Danmaku/tars/__rpc.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__rpc.py
rename to biliup/plugins/Danmaku/tars/__rpc.py
diff --git a/biliup/plugins/Danmaku/src/tars/__servantproxy.py b/biliup/plugins/Danmaku/tars/__servantproxy.py
similarity index 96%
rename from biliup/plugins/Danmaku/src/tars/__servantproxy.py
rename to biliup/plugins/Danmaku/tars/__servantproxy.py
index 5c66712..fa22c99 100644
--- a/biliup/plugins/Danmaku/src/tars/__servantproxy.py
+++ b/biliup/plugins/Danmaku/tars/__servantproxy.py
@@ -26,12 +26,12 @@ import threading
import time
# from __packet import ResponsePacket
-from biliup.plugins.Danmaku.src.tars.__TimeoutQueue import ReqMessage
-from biliup.plugins.Danmaku.src.tars.__logger import tarsLogger
-from biliup.plugins.Danmaku.src.tars.__packet import RequestPacket
-from biliup.plugins.Danmaku.src.tars.__util import util
-from biliup.plugins.Danmaku.src.tars import exception
-from biliup.plugins.Danmaku.src.tars.exception import TarsException
+from biliup.plugins.Danmaku.tars.__TimeoutQueue import ReqMessage
+from biliup.plugins.Danmaku.tars.__logger import tarsLogger
+from biliup.plugins.Danmaku.tars.__packet import RequestPacket
+from biliup.plugins.Danmaku.tars.__util import util
+from biliup.plugins.Danmaku.tars import exception
+from biliup.plugins.Danmaku.tars.exception import TarsException
class ServantProxy(object):
diff --git a/biliup/plugins/Danmaku/src/tars/__tars.py b/biliup/plugins/Danmaku/tars/__tars.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__tars.py
rename to biliup/plugins/Danmaku/tars/__tars.py
diff --git a/biliup/plugins/Danmaku/src/tars/__trans.py b/biliup/plugins/Danmaku/tars/__trans.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__trans.py
rename to biliup/plugins/Danmaku/tars/__trans.py
diff --git a/biliup/plugins/Danmaku/src/tars/__tup.py b/biliup/plugins/Danmaku/tars/__tup.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__tup.py
rename to biliup/plugins/Danmaku/tars/__tup.py
diff --git a/biliup/plugins/Danmaku/src/tars/__util.py b/biliup/plugins/Danmaku/tars/__util.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/__util.py
rename to biliup/plugins/Danmaku/tars/__util.py
diff --git a/biliup/plugins/Danmaku/src/tars/core.py b/biliup/plugins/Danmaku/tars/core.py
similarity index 87%
rename from biliup/plugins/Danmaku/src/tars/core.py
rename to biliup/plugins/Danmaku/tars/core.py
index 567e2ce..09c1e12 100644
--- a/biliup/plugins/Danmaku/src/tars/core.py
+++ b/biliup/plugins/Danmaku/tars/core.py
@@ -19,10 +19,10 @@
__version__ = "0.0.1"
-from biliup.plugins.Danmaku.src.tars.__tars import TarsInputStream
-from biliup.plugins.Danmaku.src.tars.__tars import TarsOutputStream
-from biliup.plugins.Danmaku.src.tars.__tup import TarsUniPacket
-from biliup.plugins.Danmaku.src.tars.__util import util
+from biliup.plugins.Danmaku.tars.__tars import TarsInputStream
+from biliup.plugins.Danmaku.tars.__tars import TarsOutputStream
+from biliup.plugins.Danmaku.tars.__tup import TarsUniPacket
+from biliup.plugins.Danmaku.tars.__util import util
class tarscore:
diff --git a/biliup/plugins/Danmaku/src/tars/exception.py b/biliup/plugins/Danmaku/tars/exception.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/exception.py
rename to biliup/plugins/Danmaku/tars/exception.py
diff --git a/biliup/plugins/Danmaku/src/tars/tars/EndpointF.tars b/biliup/plugins/Danmaku/tars/tars/EndpointF.tars
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/tars/EndpointF.tars
rename to biliup/plugins/Danmaku/tars/tars/EndpointF.tars
diff --git a/biliup/plugins/Danmaku/src/tars/tars/QueryF.tars b/biliup/plugins/Danmaku/tars/tars/QueryF.tars
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/tars/QueryF.tars
rename to biliup/plugins/Danmaku/tars/tars/QueryF.tars
diff --git a/biliup/plugins/Danmaku/src/tars/tars/__init__.py b/biliup/plugins/Danmaku/tars/tars/__init__.py
similarity index 100%
rename from biliup/plugins/Danmaku/src/tars/tars/__init__.py
rename to biliup/plugins/Danmaku/tars/tars/__init__.py
diff --git a/biliup/plugins/bilibili.py b/biliup/plugins/bilibili.py
index c5b44b6..a4c5e39 100644
--- a/biliup/plugins/bilibili.py
+++ b/biliup/plugins/bilibili.py
@@ -1,12 +1,12 @@
-import asyncio
+import os
+import random
+import re
import requests
-import os
-import re
-import random
-from . import match1, logger
+
from biliup.config import config
-from .Danmaku.danmaku_main import Danmaku
+from . import match1, logger
+from biliup.plugins.Danmaku import DanmakuClient
from ..engine.decorators import Plugin
from ..engine.download import DownloadBase
@@ -132,15 +132,17 @@ class Bilibili(DownloadBase):
break
return True
- def danmaku_download_start(self, filename):
+ async def danmaku_download_start(self, filename):
if self.bilibili_danmaku:
- self.danmaku = None
- self.danmaku = Danmaku(filename, self.url)
- self.danmaku.start()
+ logger.info("开始弹幕录制")
+ self.danmaku = DanmakuClient(self.url, filename + ".xml")
+ await self.danmaku.start()
- def danmaku_download_stop(self):
+ def close(self):
if self.bilibili_danmaku:
- asyncio.run(self.danmaku.stop())
+ self.danmaku.stop()
+ logger.info("结束弹幕录制")
+ # asyncio.run(self.danmaku.stop())
def get_play_info(s, custom_api, official_api_host, params):
diff --git a/biliup/plugins/douyu.py b/biliup/plugins/douyu.py
index 66d73f4..7d6b113 100644
--- a/biliup/plugins/douyu.py
+++ b/biliup/plugins/douyu.py
@@ -1,18 +1,13 @@
-import asyncio
-import subprocess
-import sys
from collections import namedtuple
-import time
-from urllib.parse import urlparse
import requests
-
from ykdl.util.match import match1
+
from biliup.config import config
+from biliup.plugins.Danmaku import DanmakuClient
from ..engine.decorators import Plugin
-from ..engine.download import DownloadBase, get_valid_filename, stream_gears_download
+from ..engine.download import DownloadBase
from ..plugins import logger
-from .Danmaku.danmaku_main import Danmaku
@Plugin.download(regexp=r'(?:https?://)?(?:(?:www|m)\.)?douyu\.com')
@@ -62,12 +57,13 @@ class Douyu(DownloadBase):
self.room_title = roominfo['room_name']
return True
- def danmaku_download_start(self, filename):
+ async def danmaku_download_start(self, filename):
if self.douyu_danmaku:
- self.danmaku = None
- self.danmaku = Danmaku(filename, self.url)
- self.danmaku.start()
+ logger.info("开始弹幕录制")
+ self.danmaku = DanmakuClient(self.url, filename + ".xml")
+ await self.danmaku.start()
- def danmaku_download_stop(self):
+ def close(self):
if self.douyu_danmaku:
- asyncio.run(self.danmaku.stop())
+ self.danmaku.stop()
+ logger.info("结束弹幕录制")
diff --git a/biliup/plugins/huya.py b/biliup/plugins/huya.py
index 1496c47..3f76ec9 100644
--- a/biliup/plugins/huya.py
+++ b/biliup/plugins/huya.py
@@ -1,4 +1,3 @@
-import asyncio
import base64
import html
import json
@@ -6,10 +5,10 @@ import json
import requests
from biliup.config import config
-from .Danmaku.danmaku_main import Danmaku
+from biliup.plugins.Danmaku import DanmakuClient
from ..engine.decorators import Plugin
-from ..plugins import match1, logger
from ..engine.download import DownloadBase
+from ..plugins import match1, logger
@Plugin.download(regexp=r'(?:https?://)?(?:(?:www|m)\.)?huya\.com')
@@ -53,12 +52,13 @@ class Huya(DownloadBase):
self.room_title = json.loads(huya)['data'][0]['gameLiveInfo']['introduction']
return True
- def danmaku_download_start(self, filename):
+ async def danmaku_download_start(self, filename):
if self.huya_danmaku:
- self.danmaku = None
- self.danmaku = Danmaku(filename, self.url)
- self.danmaku.start()
+ logger.info("开始弹幕录制")
+ self.danmaku = DanmakuClient(self.url, filename + ".xml")
+ await self.danmaku.start()
- def danmaku_download_stop(self):
+ def close(self):
if self.huya_danmaku:
- asyncio.run(self.danmaku.stop())
\ No newline at end of file
+ self.danmaku.stop()
+ logger.info("结束弹幕录制")
\ No newline at end of file