From 9e7ecfbada9a7069667dceb7855d484423f7cba8 Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Fri, 29 Oct 2021 15:22:04 +0800 Subject: [PATCH 1/3] optimize intereaction --- src/plugins/nonebot_hk_reporter/config_manager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/nonebot_hk_reporter/config_manager.py b/src/plugins/nonebot_hk_reporter/config_manager.py index e8311ab..c47bdd8 100644 --- a/src/plugins/nonebot_hk_reporter/config_manager.py +++ b/src/plugins/nonebot_hk_reporter/config_manager.py @@ -34,7 +34,7 @@ async def send_help(bot: Bot, event: Event, state: T_State): def do_add_sub(add_sub: Type[Matcher]): @add_sub.handle() async def init_promote(bot: Bot, event: Event, state: T_State): - state['_prompt'] = '请输入想要订阅的平台,目前支持:\n' + \ + state['_prompt'] = '请输入想要订阅的平台,目前支持,请输入冒号左边的名称:\n' + \ ''.join(['{}:{}\n'.format(platform_name, platform_manager[platform_name].name) \ for platform_name in common_platform]) + \ '要查看全部平台请输入:“全部”' @@ -75,7 +75,7 @@ def do_add_sub(add_sub: Type[Matcher]): state['cats'] = [] return state['_prompt'] = '请输入要订阅的类别,以空格分隔,支持的类别有:{}'.format( - ','.join(list(platform_manager[state['platform']].categories.values()))) + ' '.join(list(platform_manager[state['platform']].categories.values()))) async def parser_cats(bot: Bot, event: Event, state: T_State): res = [] From 3bd66c5f36d17eba46c9c49af85929c6f06a40b8 Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Mon, 1 Nov 2021 13:26:52 +0800 Subject: [PATCH 2/3] update arknights --- .../nonebot_hk_reporter/platform/arknights.py | 8 ++++++-- src/plugins/nonebot_hk_reporter/utils.py | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/plugins/nonebot_hk_reporter/platform/arknights.py b/src/plugins/nonebot_hk_reporter/platform/arknights.py index 61e2cd4..9840b3f 100644 --- a/src/plugins/nonebot_hk_reporter/platform/arknights.py +++ b/src/plugins/nonebot_hk_reporter/platform/arknights.py @@ -82,9 +82,13 @@ class AkVersion(NoTargetMixin, StatusChange): def compare_status(self, _, old_status, new_status): res = [] if old_status.get('preAnnounceType') == 2 and new_status.get('preAnnounceType') == 0: - res.append(Post('arknights', text='开始维护!', target_name='明日方舟更新信息')) + res.append(Post('arknights', + text='登录界面维护公告上线(大概是开始维护了)', + target_name='明日方舟更新信息')) elif old_status.get('preAnnounceType') == 0 and new_status.get('preAnnounceType') == 2: - res.append(Post('arknights', text='维护结束!冲!(可能不太准确)', target_name='明日方舟更新信息')) + res.append(Post('arknights', + text='登录界面维护公告下线(大概是开服了,冲!)', + target_name='明日方舟更新信息')) if old_status.get('clientVersion') != new_status.get('clientVersion'): res.append(Post('arknights', text='游戏本体更新(大更新)', target_name='明日方舟更新信息')) if old_status.get('resVersion') != new_status.get('resVersion'): diff --git a/src/plugins/nonebot_hk_reporter/utils.py b/src/plugins/nonebot_hk_reporter/utils.py index 641a17d..adb7a40 100644 --- a/src/plugins/nonebot_hk_reporter/utils.py +++ b/src/plugins/nonebot_hk_reporter/utils.py @@ -3,6 +3,7 @@ import base64 from html import escape import os from time import asctime +import re from typing import Awaitable, Callable, Optional from nonebot.adapters.cqhttp.message import MessageSegment @@ -12,6 +13,8 @@ from pyppeteer.browser import Browser from pyppeteer.chromium_downloader import check_chromium, download_chromium from pyppeteer.page import Page +from bs4 import BeautifulSoup as bs + from .plugin_config import plugin_config class Singleton(type): @@ -121,3 +124,15 @@ async def parse_text(text: str) -> MessageSegment: return await render.text_to_pic_cqcode(text) else: return MessageSegment.text(text) + +def html_to_text(html: str, query_dict: dict = {}) -> str: + html = re.sub(r'', '
\n', html) + html = html.replace('

', '

\n') + soup = bs(html, 'html.parser') + if query_dict: + node = soup.find(**query_dict) + else: + node = soup + assert node is not None + return node.text.strip() + From dca4c82cae06e06ff7680801fc11554ca7d9b968 Mon Sep 17 00:00:00 2001 From: felinae98 <731499577@qq.com> Date: Mon, 1 Nov 2021 13:52:39 +0800 Subject: [PATCH 3/3] fix crash on render error --- src/plugins/nonebot_hk_reporter/platform/arknights.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/nonebot_hk_reporter/platform/arknights.py b/src/plugins/nonebot_hk_reporter/platform/arknights.py index 9840b3f..64ce00a 100644 --- a/src/plugins/nonebot_hk_reporter/platform/arknights.py +++ b/src/plugins/nonebot_hk_reporter/platform/arknights.py @@ -41,6 +41,7 @@ class Arknights(NewMessage, NoTargetMixin): async def parse(self, raw_post: RawPost) -> Post: announce_url = raw_post['webUrl'] + text = '' async with httpx.AsyncClient() as client: raw_html = await client.get(announce_url) soup = bs(raw_html, 'html.parser') @@ -50,12 +51,14 @@ class Arknights(NewMessage, NoTargetMixin): render = Render() viewport = {'width': 320, 'height': 6400, 'deviceScaleFactor': 3} pic_data = await render.render(announce_url, viewport=viewport, target='div.main') - pics.append(pic_data) + if pic_data: + pics.append(pic_data) + text = '图片渲染失败' elif (pic := soup.find('img', class_='banner-image')): pics.append(pic['src']) else: raise CategoryNotSupport() - return Post('arknights', text='', url='', target_name="明日方舟游戏内公告", pics=pics, compress=True, override_use_pic=False) + return Post('arknights', text=text, url='', target_name="明日方舟游戏内公告", pics=pics, compress=True, override_use_pic=False) class AkVersion(NoTargetMixin, StatusChange):