Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/weekly/__init__.py

48 lines
2 KiB
Python
Raw Normal View History

2021-04-08 15:22:55 +00:00
import re
2021-09-10 18:05:27 +00:00
import ujson as json
2023-02-05 14:33:33 +00:00
from core.builtins import Bot
from core.builtins import Plain, Image, Url
2023-03-04 08:51:56 +00:00
from core.component import module
2023-02-05 14:33:33 +00:00
from core.utils.http import get_url
2021-11-19 17:50:34 +00:00
from .teahouse import get_rss as get_teahouse_rss
2021-08-07 07:56:48 +00:00
2022-09-05 14:08:52 +00:00
async def get_weekly(with_img=False):
2021-08-07 03:37:17 +00:00
result = json.loads(await get_url(
2022-08-01 15:33:35 +00:00
'https://minecraft.fandom.com/zh/api.php?action=parse&page=Minecraft_Wiki/weekly&prop=text|revid&format=json',
200))
2021-08-07 03:37:17 +00:00
html = result['parse']['text']['*']
text = re.sub(r'<p>', '\n', html) # 分段
text = re.sub(r'<(.*?)>', '', text, flags=re.DOTALL) # 移除所有 HTML 标签
text = re.sub(r'\n\n\n', '\n\n', text) # 移除不必要的空行
text = re.sub(r'\n*$', '', text)
img = re.findall(r'(?<=src=")(.*?)(?=/revision/latest/scale-to-(width|height)-down/\d{3}\?cb=\d{14}?")', html)
page = re.findall(r'(?<=<b><a href=").*?(?=")', html)
2023-04-05 04:06:12 +00:00
msg_list = [Plain(msg.locale.t("weekly.message.expired") if page[
0] == '/zh/wiki/%E7%8E%BB%E7%92%83' else msg.locale.t("weekly.message", text=text))]
2021-09-06 05:13:03 +00:00
if img:
2023-04-05 04:06:12 +00:00
msg_list.append(Plain(msg.locale.t("weekly.message.link", img=str(Url(f'{img[0][0]}?format=original')),
article=str(Url(f'https://minecraft.fandom.com{page[0]}')),
link=str(Url(f'https://minecraft.fandom.com/zh/wiki/?oldid={str(result["parse"]["revid"])}')))))
2022-09-05 14:08:52 +00:00
if with_img:
msg_list.append(Image(path=img[0][0]))
2021-08-07 03:37:17 +00:00
2021-09-06 05:13:03 +00:00
return msg_list
2021-08-07 03:37:17 +00:00
2021-08-07 07:56:48 +00:00
2023-03-04 08:51:56 +00:00
wky = module('weekly', developers=['Dianliang233'])
2021-10-24 10:55:45 +00:00
2023-04-05 04:06:12 +00:00
@wky.handle('{{weekly.help}}')
2023-02-05 14:33:33 +00:00
async def _(msg: Bot.MessageSession):
2022-09-05 14:08:52 +00:00
weekly = await get_weekly(True if msg.target.clientName == 'QQ' else False)
2022-05-21 16:04:29 +00:00
await msg.finish(weekly)
2021-11-19 17:50:34 +00:00
2023-04-05 04:06:12 +00:00
@wky.handle('teahouse {{weekly.teahouse.help}}')
2023-02-05 14:33:33 +00:00
async def _(msg: Bot.MessageSession):
2021-11-19 17:50:34 +00:00
weekly = await get_teahouse_rss()
2022-05-21 16:04:29 +00:00
await msg.finish(weekly)