Merge branch 'main' into dev

This commit is contained in:
felinae98 2021-11-01 14:38:27 +08:00
commit 0916b1a19d
No known key found for this signature in database
GPG Key ID: 00C8B010587FF610
3 changed files with 28 additions and 6 deletions

View File

@ -33,7 +33,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]) + \
'要查看全部平台请输入:“全部”'
@ -74,7 +74,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 = []

View File

@ -40,6 +40,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')
@ -49,12 +50,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):
@ -81,9 +84,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'):

View File

@ -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'<br\s*/?>', '<br>\n', html)
html = html.replace('</p>', '</p>\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()