From d6116f7b2cd63cd581bb06ebfccb1d52fe89a167 Mon Sep 17 00:00:00 2001 From: SlyAimer <2289782085@qq.com> Date: Mon, 3 Mar 2025 11:25:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(bot):=20=E6=B7=BB=E5=8A=A0=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E4=BB=BB=E5=8A=A1=E6=B8=85=E7=90=86=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=20refactor(light=5Fnovel):=20=E5=B0=86?= =?UTF-8?q?=E8=BD=BB=E5=B0=8F=E8=AF=B4=E5=9B=BE=E7=89=87=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E4=B8=B4=E6=97=B6=E8=B7=AF=E5=BE=84=20refact?= =?UTF-8?q?or(data=5Fsource):=20=E5=B0=86=E6=97=A5=E6=8A=A5=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E8=B7=AF=E5=BE=84=E6=94=B9=E4=B8=BA=E4=B8=B4=E6=97=B6?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=20feat(platform):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E6=B8=85=E7=90=86=E7=BC=93=E5=AD=98=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20refactor(html=5Fto=5Fimg):=20=E5=B0=86=E8=BD=BB?= =?UTF-8?q?=E5=B0=8F=E8=AF=B4=E5=9B=BE=E7=89=87=E8=B7=AF=E5=BE=84=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=B8=B4=E6=97=B6=E8=B7=AF=E5=BE=84=20refactor(daily?= =?UTF-8?q?=5Freport):=20=E5=B0=86=E6=97=A5=E6=8A=A5=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E6=94=B9=E4=B8=BA=E4=B8=B4=E6=97=B6=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=20refactor(path=5Fconfig):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E6=97=A5=E6=8A=A5=E5=92=8C=E8=BD=BB=E5=B0=8F=E8=AF=B4=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 11 ++++++++--- src/clover_lightnovel/html_to_img.py | 6 +++--- src/clover_report/data_source.py | 6 +++--- src/configs/path_config.py | 6 ------ src/plugins/daily_report.py | 7 +++---- src/plugins/light_novel.py | 6 +++--- src/plugins/platform.py | 26 ++++++++++++++++++++++---- 7 files changed, 42 insertions(+), 26 deletions(-) diff --git a/bot.py b/bot.py index bdfd08f..59c8056 100644 --- a/bot.py +++ b/bot.py @@ -1,18 +1,23 @@ import nonebot from nonebot.adapters.qq import Adapter as QQAdapter from nonebot import logger -from nonebot.log import default_format, default_filter +from nonebot.log import default_format +from apscheduler.schedulers.blocking import BlockingScheduler +from src.configs.path_config import log_path +from src.plugins.platform import clean_temp_cache nonebot.init() driver = nonebot.get_driver() driver.register_adapter(QQAdapter) # 注册QQ适配器 nonebot.load_from_toml("pyproject.toml") -logger.add("src/resources/log/error.log", level="ERROR", format=default_format, rotation="1 week") +logger.add(log_path, level="ERROR", format=default_format, rotation="1 week") from src.clover_sqlite.data_init.db_connect import disconnect, init driver.on_startup(init) driver.on_shutdown(disconnect) - +scheduler = BlockingScheduler() +scheduler.add_job(clean_temp_cache, 'cron', hour=0, minute=0) +scheduler.start() if __name__ == "__main__": nonebot.run() diff --git a/src/clover_lightnovel/html_to_img.py b/src/clover_lightnovel/html_to_img.py index ebecd23..fa891c4 100644 --- a/src/clover_lightnovel/html_to_img.py +++ b/src/clover_lightnovel/html_to_img.py @@ -6,7 +6,7 @@ from pathlib import Path from nonebot_plugin_htmlrender import template_to_pic from playwright.async_api import async_playwright -from src.configs.path_config import light_novel_path +from src.configs.path_config import temp_path import src.clover_lightnovel.wenku8 as Wenku8 @@ -17,13 +17,13 @@ async def save_img(data: bytes): :param data: :return: """ - file_path = light_novel_path + f"{datetime.now().date()}.png" + file_path = temp_path + f"{datetime.now().date()}轻小说.png" with open(file_path, "wb") as file: file.write(data) async def get_ln_image(): now = datetime.now() - file = Path() / light_novel_path / f"{now.date()}.png" + file = Path() / temp_path / f"{now.date()}轻小说.png" if os.path.exists(file): with file.open("rb") as image_file: return image_file.read() diff --git a/src/clover_report/data_source.py b/src/clover_report/data_source.py index df5f854..46ab3af 100644 --- a/src/clover_report/data_source.py +++ b/src/clover_report/data_source.py @@ -13,7 +13,7 @@ from tenacity import retry, stop_after_attempt, wait_fixed from zhdate import ZhDate from .config import Anime, Hitokoto, SixData from .date import get_festivals_dates -from src.configs.path_config import daily_news_path +from src.configs.path_config import temp_path from playwright.async_api import async_playwright @@ -68,7 +68,7 @@ async def save_img(data: bytes): :param data: :return: """ - file_path = daily_news_path + f"{datetime.now().date()}.png" + file_path = temp_path + f"{datetime.now().date()}.png" with open(file_path, "wb") as file: file.write(data) @@ -98,7 +98,7 @@ class Report: async def get_report_image(cls) -> bytes: """获取数据""" now = datetime.now() - file = Path() / daily_news_path / f"{now.date()}.png" + file = Path() / temp_path / f"{now.date()}.png" if os.path.exists(file): with file.open("rb") as image_file: return image_file.read() diff --git a/src/configs/path_config.py b/src/configs/path_config.py index 76d52d3..99f0865 100644 --- a/src/configs/path_config.py +++ b/src/configs/path_config.py @@ -22,12 +22,6 @@ os.makedirs(good_bad, exist_ok=True) #谁说 生成图片路径 who_say_path = path+'/image/who_say/' os.makedirs(who_say_path, exist_ok=True) -# 日报 -daily_news_path = path+'/image/report/' -os.makedirs(daily_news_path, exist_ok=True) -# 轻小说 -light_novel_path = path + '/image/lightnovel/' -os.makedirs(light_novel_path, exist_ok=True) #yuc_wiki 动漫wiki yuc_wiki_path = path + '/image/yuc_wiki/' os.makedirs(yuc_wiki_path, exist_ok=True) diff --git a/src/plugins/daily_report.py b/src/plugins/daily_report.py index 8bdd522..8368fa8 100644 --- a/src/plugins/daily_report.py +++ b/src/plugins/daily_report.py @@ -4,7 +4,7 @@ from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import MessageSegment from src.clover_report.data_source import Report -from src.configs.path_config import daily_news_path +from src.configs.path_config import temp_path import os @@ -12,9 +12,8 @@ daily_report = on_command("日报", rule=to_me(), priority=10) @daily_report.handle() async def handle_function(): now = datetime.now() - file = Path() / daily_news_path / f"{now.date()}.png" + file = Path() / temp_path / f"{now.date()}日报.png" if not os.path.exists(file): await daily_report.send("您是今天第一个查看日报的哦,来看看世界上都发生了些什么吧💫\nCrunching the latest news, just for you. Hang tight…") await Report.get_report_image() - now = datetime.now().date() - await daily_report.finish(MessageSegment.file_image(Path(daily_news_path+f"{now}.png"))) + await daily_report.finish(MessageSegment.file_image(Path(temp_path+f"{now}日报.png"))) diff --git a/src/plugins/light_novel.py b/src/plugins/light_novel.py index 6bf07e2..0143ee8 100644 --- a/src/plugins/light_novel.py +++ b/src/plugins/light_novel.py @@ -6,7 +6,7 @@ from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import MessageSegment from src.clover_lightnovel.html_to_img import get_ln_image -from src.configs.path_config import light_novel_path +from src.configs.path_config import temp_path import os @@ -14,7 +14,7 @@ light_novel = on_command("轻小说", rule=to_me(), priority=10, block=True) @light_novel.handle() async def get_ln(): now = datetime.now() - file = Path() / light_novel_path / f"{now.date()}.png" + file = Path() / temp_path / f"{now.date()}轻小说.png" if not os.path.exists(file): await light_novel.send("正在为您整理最新轻小说咨询哦,请稍等🥳") try: @@ -25,4 +25,4 @@ async def get_ln(): "\033[31;1m requests.exceptions.InvalidURL \033[0m" + str(e)) await light_novel.finish("获取信息失败了,请重试。") now = datetime.now().date() - await light_novel.finish(MessageSegment.file_image(Path(light_novel_path+f"{now}.png"))) \ No newline at end of file + await light_novel.finish(MessageSegment.file_image(Path(temp_path+f"{now}轻小说.png"))) \ No newline at end of file diff --git a/src/plugins/platform.py b/src/plugins/platform.py index 5eeba4a..7c11c8e 100644 --- a/src/plugins/platform.py +++ b/src/plugins/platform.py @@ -1,10 +1,14 @@ +import os +import glob +import time +import psutil +import platform +import logging from pathlib import Path from nonebot.rule import to_me from nonebot.plugin import on_command from nonebot.adapters.qq import Message, MessageSegment -import platform -import psutil -import time +from src.configs.path_config import temp_path,video_path repository = on_command("repo", rule=to_me(), priority=10, block=True) @@ -39,4 +43,18 @@ async def get_platform_info(): "\n[内存占用]: " + str(memory_usage) + "%" "\n\n[Python版本]: " + python_version + "\n\n[Bot源码]: 请发送 /repo \n[联系我们]: cloverta@petalmail·com") - await platform_info.finish(content) \ No newline at end of file + await platform_info.finish(content) + + +def clean_temp_cache(): + """定时清理缓存文件""" + path_list = [temp_path, video_path] + + for folder_path in path_list: + files = get_files_in_folder(folder_path) + for file in files: + os.remove(file) + + +def get_files_in_folder(folder_path: Path): + return [Path(f) for f in glob.glob(str(folder_path / "*")) if Path(f).is_file()]