mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-06 03:46:10 +08:00
添加McbbsNews中的Java版本资讯订阅类型
This commit is contained in:
parent
abb0dd5746
commit
5ede3b27d1
78
src/plugins/nonebot_bison/platform/mcbbsnews.py
Normal file
78
src/plugins/nonebot_bison/platform/mcbbsnews.py
Normal file
@ -0,0 +1,78 @@
|
||||
import re
|
||||
import time
|
||||
|
||||
import httpx
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from ..types import Category, RawPost, Target
|
||||
from .platform import CategoryNotSupport, NewMessage
|
||||
|
||||
|
||||
def _format_text(rawtext: str) -> str:
|
||||
"""处理BeautifulSoup生成的string中奇怪的回车+连续空格"""
|
||||
ftext = re.sub(r"\n\s*", " ", rawtext)
|
||||
return ftext
|
||||
|
||||
|
||||
def _stamp_date(rawdate: str) -> int:
|
||||
"""将时间转化为时间戳yyyy-mm-dd->timestamp"""
|
||||
time_stamp = int(time.mktime(time.strptime(rawdate, "%Y-%m-%d")))
|
||||
return time_stamp
|
||||
|
||||
|
||||
class McbbsJavaNews(NewMessage):
|
||||
categories = {1: "Java版本资讯"}
|
||||
enable_tag = False
|
||||
platform_name = "mcbbsnews"
|
||||
name = "MCBBS幻翼块讯"
|
||||
enabled = True
|
||||
is_common = False
|
||||
schedule_type = "interval"
|
||||
schedule_kw = {"hours": 1}
|
||||
has_target = False
|
||||
|
||||
async def get_target_name(self, _: Target) -> str:
|
||||
return f"{self.name} {self.categories[1]}"
|
||||
|
||||
async def get_sub_list(self, _: Target) -> list[RawPost]:
|
||||
url = "https://www.mcbbs.net/forum-news-1.html"
|
||||
headers = {
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
||||
"Chrome/51.0.2704.63 Safari/537.36"
|
||||
}
|
||||
|
||||
async with httpx.AsyncClient() as client:
|
||||
html = await client.get(url, headers=headers)
|
||||
soup = BeautifulSoup(html.text, "html.parser")
|
||||
raw_post_list = soup.find_all(
|
||||
"tbody", id=re.compile(r"normalthread_[0-9]*")
|
||||
)
|
||||
post_list = []
|
||||
for raw_post in raw_post_list:
|
||||
post = {}
|
||||
post["url"] = raw_post.find("a", class_="s xst")["href"]
|
||||
post["title"] = _format_text(raw_post.find("a", class_="s xst").string)
|
||||
post["category"] = raw_post.select("th em a")[0].string
|
||||
post["author"] = raw_post.select("td:nth-of-type(2) cite a")[0].string
|
||||
post["id"] = raw_post["id"]
|
||||
rawdate = (
|
||||
raw_post.select("td:nth-of-type(2) em span span")[0]["title"]
|
||||
if raw_post.select("td:nth-of-type(2) em span span")
|
||||
else raw_post.select("td:nth-of-type(2) em span")[0].string
|
||||
)
|
||||
post["date"] = _stamp_date(rawdate)
|
||||
post_list.append(post)
|
||||
|
||||
return post_list
|
||||
|
||||
def get_id(self, post: RawPost) -> str:
|
||||
return post["id"]
|
||||
|
||||
def get_date(self, post: RawPost) -> int:
|
||||
return post["date"]
|
||||
|
||||
def get_category(self, post: RawPost) -> Category:
|
||||
if post["category"] == "Java版本资讯":
|
||||
return Category(1)
|
||||
else:
|
||||
return CategoryNotSupport("McbbsNews订阅暂不支持 `{}".format(post["category"]))
|
Loading…
x
Reference in New Issue
Block a user