2021-07-14 20:16:57 +08:00

57 lines
1.9 KiB
Python

from typing import Any
import httpx
import json
from bs4 import BeautifulSoup as bs
from ..types import RawPost, Target
from .platform import NewMessage, NoTargetMixin, CategoryNotSupport
from ..utils import Render
from ..post import Post
class Arknights(NewMessage, NoTargetMixin):
categories = {}
platform_name = 'arknights'
name = '明日方舟游戏内公告'
enable_tag = False
enabled = True
is_common = False
schedule_type = 'interval'
schedule_kw = {'seconds': 30}
@staticmethod
async def get_target_name(_: Target) -> str:
return '明日方舟游戏内公告'
async def get_sub_list(self, _) -> list[RawPost]:
async with httpx.AsyncClient() as client:
raw_data = await client.get('https://ak-conf.hypergryph.com/config/prod/announce_meta/IOS/announcement.meta.json')
return json.loads(raw_data.text)['announceList']
def get_id(self, post: RawPost) -> Any:
return post['announceId']
def get_date(self, _: RawPost) -> None:
return None
async def parse(self, raw_post: RawPost) -> Post:
announce_url = raw_post['webUrl']
async with httpx.AsyncClient() as client:
raw_html = await client.get(announce_url)
soup = bs(raw_html, 'html.parser')
pics = []
if soup.find("div", class_="standerd-container"):
# 图文
render = Render()
viewport = {'width': 320, 'height': 6400, 'deviceScaleFactor': 3}
pic_data = await render.render(announce_url, viewport=viewport, target='div.main')
pics.append('base64://{}'.format(pic_data))
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)