fix commands

This commit is contained in:
jxxghp
2023-06-09 11:26:53 +08:00
parent 50d71621d7
commit 01428e9f8f
25 changed files with 228 additions and 202 deletions

View File

@@ -1,10 +1,10 @@
import json
from abc import ABCMeta, abstractmethod
from pathlib import Path
from typing import Any, Optional
from typing import Any
from app.chain import ChainBase
from app.core import settings, Context
from app.core import settings
from app.db import SessionLocal
from app.db.models import Base
from app.db.models.plugin import PluginData
@@ -17,7 +17,7 @@ class PluginChian(ChainBase):
插件处理链
"""
def process(self, *args, **kwargs) -> Optional[Context]:
def process(self, *args, **kwargs):
pass

View File

@@ -31,11 +31,8 @@ class AutoSignIn(_PluginBase):
event: EventManager = None
# 定时器
_scheduler = None
# 加载的模块
_site_schema: list = []
# 退出事件
_event = Event()
def init_plugin(self, config: dict = None):
self.sites = SitesHelper()
@@ -70,7 +67,7 @@ class AutoSignIn(_PluginBase):
:return: 命令关键字、事件、描述、附带数据
"""
return {
"cmd": "/pts",
"cmd": "/sitesignin",
"event": EventType.SiteSignin,
"desc": "站点自动签到",
"data": {}
@@ -191,9 +188,7 @@ class AutoSignIn(_PluginBase):
if self._scheduler:
self._scheduler.remove_all_jobs()
if self._scheduler.running:
self._event.set()
self._scheduler.shutdown()
self._event.clear()
self._scheduler = None
except Exception as e:
logger.error("退出插件失败:%s" % str(e))

View File

@@ -7,7 +7,8 @@ import requests
from apscheduler.schedulers.background import BackgroundScheduler
from ruamel.yaml import CommentedMap
from app.core import settings
from app.core import settings, eventmanager
from app.core.event_manager import Event
from app.helper import ModuleHelper
from app.helper.sites import SitesHelper
from app.log import logger
@@ -17,6 +18,9 @@ from app.utils.http import RequestUtils
from app.utils.timer import TimerUtils
import warnings
from app.utils.types import EventType
warnings.filterwarnings("ignore", category=FutureWarning)
@@ -57,6 +61,19 @@ class SiteStatistic(_PluginBase):
self._scheduler.print_jobs()
self._scheduler.start()
@staticmethod
def get_command() -> dict:
"""
定义远程控制命令
:return: 命令关键字、事件、描述、附带数据
"""
return {
"cmd": "/sitestatistic",
"event": EventType.SiteStatistic,
"desc": "站点数据统计",
"data": {}
}
def stop_service(self):
pass
@@ -221,6 +238,14 @@ class SiteStatistic(_PluginBase):
title=f"站点 {site_user_info.site_name} 收到 "
f"{site_user_info.message_unread} 条新消息,请登陆查看")
@eventmanager.register(EventType.SiteStatistic)
def refresh(self, event: Event):
"""
刷新站点数据
"""
logger.info("开始执行站点数据刷新 ...")
self.refresh_all_site_data(force=True)
def refresh_all_site_data(self, force: bool = False, specify_sites: list = None):
"""
多线程刷新站点下载上传量默认间隔6小时
@@ -228,6 +253,8 @@ class SiteStatistic(_PluginBase):
if not self.sites.get_indexers():
return
logger.info("开始刷新站点数据 ...")
with lock:
if not force \
@@ -251,15 +278,13 @@ class SiteStatistic(_PluginBase):
# 并发刷新
with ThreadPool(min(len(refresh_sites), self._MAX_CONCURRENCY)) as p:
site_user_infos: List[ISiteUserInfo] = p.map(self.__refresh_site_data, refresh_sites)
site_user_infos = [info for info in site_user_infos if info]
# 保存数据
for site_user_info in site_user_infos:
# 获取今天的日期
key = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
value = site_user_info.to_dict()
# 按日期保存为字典
self.save_data(key, value)
p.map(self.__refresh_site_data, refresh_sites)
# 获取今天的日期
key = datetime.now().strftime('%Y-%m-%d')
# 保存数据
self.save_data(key, self._sites_data)
# 更新时间
self._last_update_time = datetime.now()
logger.info("站点数据刷新完成")