Merge branch 'main' into dev

This commit is contained in:
felinae98
2021-10-29 15:00:04 +08:00
7 changed files with 195 additions and 163 deletions
@@ -13,6 +13,11 @@ from .platform import platform_manager, check_sub_target
from .utils import parse_text
from .types import Target
def _gen_prompt_template(prompt: str):
if hasattr(Message, 'template'):
return Message.template(prompt)
return prompt
common_platform = [p.platform_name for p in \
filter(lambda platform: platform.enabled and platform.is_common,
platform_manager.values())
@@ -45,7 +50,7 @@ def do_add_sub(add_sub: Type[Matcher]):
else:
await add_sub.reject('平台输入错误')
@add_sub.got('platform', '{_prompt}', parse_platform)
@add_sub.got('platform', _gen_prompt_template('{_prompt}'), parse_platform)
@add_sub.handle()
async def init_id(bot: Bot, event: Event, state: T_State):
if platform_manager[state['platform']].has_target:
@@ -62,7 +67,7 @@ def do_add_sub(add_sub: Type[Matcher]):
state['id'] = target
state['name'] = name
@add_sub.got('id', '{_prompt}', parse_id)
@add_sub.got('id', _gen_prompt_template('{_prompt}'), parse_id)
@add_sub.handle()
async def init_cat(bot: Bot, event: Event, state: T_State):
if not platform_manager[state['platform']].categories:
@@ -79,7 +84,7 @@ def do_add_sub(add_sub: Type[Matcher]):
res.append(platform_manager[state['platform']].reverse_category[cat])
state['cats'] = res
@add_sub.got('cats', '{_prompt}', parser_cats)
@add_sub.got('cats', _gen_prompt_template('{_prompt}'), parser_cats)
@add_sub.handle()
async def init_tag(bot: Bot, event: Event, state: T_State):
if not platform_manager[state['platform']].enable_tag:
@@ -93,7 +98,7 @@ def do_add_sub(add_sub: Type[Matcher]):
else:
state['tags'] = str(event.get_message()).strip().split()
@add_sub.got('tags', '{_prompt}', parser_tags)
@add_sub.got('tags', _gen_prompt_template('{_prompt}'), parser_tags)
@add_sub.handle()
async def add_sub_process(bot: Bot, event: Event, state: T_State):
config = Config()
+4 -1
View File
@@ -110,7 +110,10 @@ class Post:
msgs = []
text = ''
if self.text:
text += '{}'.format(self.text if len(self.text) < 500 else self.text[:500] + '...')
if self._use_pic():
text += '{}'.format(self.text)
else:
text += '{}'.format(self.text if len(self.text) < 500 else self.text[:500] + '...')
text += '\n来源: {}'.format(self.target_type)
if self.target_name:
text += ' {}'.format(self.target_name)
+5 -2
View File
@@ -22,11 +22,14 @@ async def do_send_msgs():
bot, user, user_type, msg, retry_time = QUEUE.pop(0)
try:
await _do_send(bot, user, user_type, msg)
except:
except Exception as e:
if retry_time > 0:
QUEUE.insert(0, (bot, user, user_type, msg, retry_time - 1))
else:
logger.warning('send msg err {}'.format(msg))
msg_str = str(msg)
if len(msg_str) > 50:
msg_str = msg_str[:50] + '...'
logger.warning(f'send msg err {e} {msg_str}')
LAST_SEND_TIME = time.time()
async def send_msgs(bot, user, user_type, msgs):
+9 -4
View File
@@ -1,13 +1,15 @@
import asyncio
import base64
from html import escape
import os
from time import asctime
from typing import Awaitable, Callable, Optional
from urllib.parse import quote
from nonebot.adapters.cqhttp.message import MessageSegment
from nonebot.adapters.cqhttp.message import MessageSegment
from nonebot.log import logger
from pyppeteer import connect, launch
from pyppeteer.browser import Browser
from pyppeteer.chromium_downloader import check_chromium, download_chromium
from pyppeteer.page import Page
from .plugin_config import plugin_config
@@ -19,6 +21,10 @@ class Singleton(type):
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
if not plugin_config.hk_reporter_browser and not plugin_config.hk_reporter_use_local \
and not check_chromium():
os.environ['PYPPETEER_DOWNLOAD_HOST'] = 'http://npm.taobao.org/mirrors'
download_chromium()
class Render(metaclass=Singleton):
@@ -60,8 +66,7 @@ class Render(metaclass=Singleton):
# self.lock.release()
def _inter_log(self, message: str) -> None:
# self.interval_log += asctime() + '' + message + '\n'
logger.debug(message)
self.interval_log += asctime() + '' + message + '\n'
async def do_render(self, url: str, viewport: Optional[dict] = None, target: Optional[str] = None,
operation: Optional[Callable[[Page], Awaitable[None]]] = None) -> Optional[bytes]: