mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-09-03 06:22:25 +08:00
Merge branch 'main' into dev
This commit is contained in:
commit
0916b1a19d
@ -33,7 +33,7 @@ async def send_help(bot: Bot, event: Event, state: T_State):
|
|||||||
def do_add_sub(add_sub: Type[Matcher]):
|
def do_add_sub(add_sub: Type[Matcher]):
|
||||||
@add_sub.handle()
|
@add_sub.handle()
|
||||||
async def init_promote(bot: Bot, event: Event, state: T_State):
|
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) \
|
''.join(['{}:{}\n'.format(platform_name, platform_manager[platform_name].name) \
|
||||||
for platform_name in common_platform]) + \
|
for platform_name in common_platform]) + \
|
||||||
'要查看全部平台请输入:“全部”'
|
'要查看全部平台请输入:“全部”'
|
||||||
@ -74,7 +74,7 @@ def do_add_sub(add_sub: Type[Matcher]):
|
|||||||
state['cats'] = []
|
state['cats'] = []
|
||||||
return
|
return
|
||||||
state['_prompt'] = '请输入要订阅的类别,以空格分隔,支持的类别有:{}'.format(
|
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):
|
async def parser_cats(bot: Bot, event: Event, state: T_State):
|
||||||
res = []
|
res = []
|
||||||
|
@ -40,6 +40,7 @@ class Arknights(NewMessage, NoTargetMixin):
|
|||||||
|
|
||||||
async def parse(self, raw_post: RawPost) -> Post:
|
async def parse(self, raw_post: RawPost) -> Post:
|
||||||
announce_url = raw_post['webUrl']
|
announce_url = raw_post['webUrl']
|
||||||
|
text = ''
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
raw_html = await client.get(announce_url)
|
raw_html = await client.get(announce_url)
|
||||||
soup = bs(raw_html, 'html.parser')
|
soup = bs(raw_html, 'html.parser')
|
||||||
@ -49,12 +50,14 @@ class Arknights(NewMessage, NoTargetMixin):
|
|||||||
render = Render()
|
render = Render()
|
||||||
viewport = {'width': 320, 'height': 6400, 'deviceScaleFactor': 3}
|
viewport = {'width': 320, 'height': 6400, 'deviceScaleFactor': 3}
|
||||||
pic_data = await render.render(announce_url, viewport=viewport, target='div.main')
|
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')):
|
elif (pic := soup.find('img', class_='banner-image')):
|
||||||
pics.append(pic['src'])
|
pics.append(pic['src'])
|
||||||
else:
|
else:
|
||||||
raise CategoryNotSupport()
|
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):
|
class AkVersion(NoTargetMixin, StatusChange):
|
||||||
|
|
||||||
@ -81,9 +84,13 @@ class AkVersion(NoTargetMixin, StatusChange):
|
|||||||
def compare_status(self, _, old_status, new_status):
|
def compare_status(self, _, old_status, new_status):
|
||||||
res = []
|
res = []
|
||||||
if old_status.get('preAnnounceType') == 2 and new_status.get('preAnnounceType') == 0:
|
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:
|
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'):
|
if old_status.get('clientVersion') != new_status.get('clientVersion'):
|
||||||
res.append(Post('arknights', text='游戏本体更新(大更新)', target_name='明日方舟更新信息'))
|
res.append(Post('arknights', text='游戏本体更新(大更新)', target_name='明日方舟更新信息'))
|
||||||
if old_status.get('resVersion') != new_status.get('resVersion'):
|
if old_status.get('resVersion') != new_status.get('resVersion'):
|
||||||
|
@ -3,6 +3,7 @@ import base64
|
|||||||
from html import escape
|
from html import escape
|
||||||
import os
|
import os
|
||||||
from time import asctime
|
from time import asctime
|
||||||
|
import re
|
||||||
from typing import Awaitable, Callable, Optional
|
from typing import Awaitable, Callable, Optional
|
||||||
|
|
||||||
from nonebot.adapters.cqhttp.message import MessageSegment
|
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.chromium_downloader import check_chromium, download_chromium
|
||||||
from pyppeteer.page import Page
|
from pyppeteer.page import Page
|
||||||
|
|
||||||
|
from bs4 import BeautifulSoup as bs
|
||||||
|
|
||||||
from .plugin_config import plugin_config
|
from .plugin_config import plugin_config
|
||||||
|
|
||||||
class Singleton(type):
|
class Singleton(type):
|
||||||
@ -121,3 +124,15 @@ async def parse_text(text: str) -> MessageSegment:
|
|||||||
return await render.text_to_pic_cqcode(text)
|
return await render.text_to_pic_cqcode(text)
|
||||||
else:
|
else:
|
||||||
return MessageSegment.text(text)
|
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()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user