update ark

This commit is contained in:
felinae98 2021-02-16 22:58:28 +08:00
parent 8fb5965275
commit ff7b3efcba
No known key found for this signature in database
GPG Key ID: 00C8B010587FF610
2 changed files with 48 additions and 2 deletions

View File

@ -1,3 +1,5 @@
from _typeshed import NoneType
from typing import Any
import httpx
import json
import time
@ -6,10 +8,14 @@ from bs4 import BeautifulSoup as bs
from datetime import datetime
from nonebot import logger
from ..types import Category, RawPost, Tag, Target
from .platform import PlatformNoTarget, CategoryNotSupport
from ..utils import Singleton, Render
from ..post import Post
class Arknights(metaclass=Singleton):
class Arknights_(metaclass=Singleton):
def __init__(self):
self.exists_posts = defaultdict(set)
@ -65,3 +71,41 @@ class Arknights(metaclass=Singleton):
logger.warning("network connection error: {}, url: {}".format(type(err), err.request.url))
return []
class Arknights(PlatformNoTarget):
categories = {}
platform_name = 'arknights'
enable_tag = False
@staticmethod
async def get_account_name() -> str:
return '明日方舟游戏内公告'
async def get_sub_list(self) -> list[RawPost]:
async with httpx.AsyncClient() as client:
raw_data = await client.get('http://ak-fs.hypergryph.com/announce/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, post: 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', '', announce_url, pics=pics)

View File

@ -2,6 +2,7 @@ import nonebot
from nonebot import logger
from collections import defaultdict
from typing import Type
from .arkninghts import Arknights
from .weibo import Weibo
from .bilibili import Bilibili
from .rss import Rss
@ -16,7 +17,8 @@ async def check_sub_target(target_type, target):
platform_manager: dict[str, PlatformProto] = {
'bilibili': Bilibili(),
'weibo': Weibo(),
'rss': Rss()
'rss': Rss(),
'arknights': Arknights()
}
async def fetch_and_send(target_type: str):