diff --git a/app/chain/site.py b/app/chain/site.py index cf6d97f4..5a916ba6 100644 --- a/app/chain/site.py +++ b/app/chain/site.py @@ -1,16 +1,15 @@ import base64 import re from datetime import datetime -from typing import Tuple, Optional -from typing import Union +from typing import Optional, Tuple, Union from urllib.parse import urljoin from lxml import etree from ruamel.yaml import CommentedMap from app.chain import ChainBase -from app.core.config import settings, global_vars -from app.core.event import eventmanager, Event, EventManager +from app.core.config import global_vars, settings +from app.core.event import Event, EventManager, eventmanager from app.db.models.site import Site from app.db.site_oper import SiteOper from app.db.systemconfig_oper import SystemConfigOper @@ -66,6 +65,9 @@ class SiteChain(ChainBase): self.siteoper.update_userdata(domain=StringUtils.get_url_domain(site.get("domain")), name=site.get("name"), payload=userdata.dict()) + EventManager().send_event(EventType.SiteRefreshed, { + "site_id": site.get("id") + }) return userdata def refresh_userdatas(self) -> None: @@ -73,11 +75,18 @@ class SiteChain(ChainBase): 刷新所有站点的用户数据 """ sites = self.siteshelper.get_indexers() + any_site_updated = False for site in sites: if global_vars.is_system_stopped: - break + return if site.get("is_active"): - self.refresh_userdata(site) + userdata = self.refresh_userdata(site) + if userdata: + any_site_updated = True + if any_site_updated: + EventManager().send_event(EventType.SiteRefreshed, { + "site_id": "*" + }) def is_special_site(self, domain: str) -> bool: """ diff --git a/app/schemas/types.py b/app/schemas/types.py index e8bd5d46..5cb99091 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -28,6 +28,8 @@ class EventType(Enum): SiteDeleted = "site.deleted" # 站点已更新 SiteUpdated = "site.updated" + # 站点已刷新 + SiteRefreshed = "site.refreshed" # 转移完成 TransferComplete = "transfer.complete" # 下载已添加