mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-02 09:26:12 +08:00
update ark
This commit is contained in:
parent
8fb5965275
commit
ff7b3efcba
@ -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)
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user