From eb2b34d71c841623a0f11978d7a3159f80a67675 Mon Sep 17 00:00:00 2001 From: Attente <19653207+wikrin@users.noreply.github.com> Date: Wed, 26 Nov 2025 20:58:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(themoviedb):=20=E6=B7=BB=E5=8A=A0=E5=AF=B9?= =?UTF-8?q?=20ConfigChanged=20=E4=BA=8B=E4=BB=B6=E7=9A=84=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整 username 字段类型以兼容整数形式 --- app/modules/telegram/__init__.py | 6 ++---- app/modules/themoviedb/__init__.py | 29 +++++++++++++++++++++++------ app/schemas/message.py | 2 +- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/app/modules/telegram/__init__.py b/app/modules/telegram/__init__.py index cec175c3..f135a376 100644 --- a/app/modules/telegram/__init__.py +++ b/app/modules/telegram/__init__.py @@ -1,12 +1,10 @@ import copy import json import re -from typing import Dict -from typing import Optional, Union, List, Tuple, Any +from typing import Dict, Optional, Union, List, Tuple, Any from app.core.context import MediaInfo, Context -from app.core.event import Event -from app.core.event import eventmanager +from app.core.event import eventmanager, Event from app.log import logger from app.modules import _ModuleBase, _MessageBase from app.modules.telegram.telegram import Telegram diff --git a/app/modules/themoviedb/__init__.py b/app/modules/themoviedb/__init__.py index d5f9b7e5..1f0250e4 100644 --- a/app/modules/themoviedb/__init__.py +++ b/app/modules/themoviedb/__init__.py @@ -7,6 +7,7 @@ import zhconv from app import schemas from app.core.config import settings from app.core.context import MediaInfo +from app.core.event import eventmanager, Event from app.core.meta import MetaBase from app.log import logger from app.modules import _ModuleBase @@ -14,8 +15,7 @@ from app.modules.themoviedb.category import CategoryHelper from app.modules.themoviedb.scraper import TmdbScraper from app.modules.themoviedb.tmdb_cache import TmdbCache from app.modules.themoviedb.tmdbapi import TmdbApi -from app.schemas import MediaPerson -from app.schemas.types import MediaType, MediaImageType, ModuleType, MediaRecognizeType +from app.schemas.types import MediaType, MediaImageType, ModuleType, MediaRecognizeType, EventType from app.utils.http import RequestUtils @@ -39,6 +39,23 @@ class TheMovieDbModule(_ModuleBase): self.category = CategoryHelper() self.scraper = TmdbScraper() + @eventmanager.register(EventType.ConfigChanged) + def handle_config_changed(self, event: Event): + """ + 处理配置变更事件 + :param event: 事件对象 + """ + if not event: + return + event_data: schemas.ConfigChangeEventData = event.event_data + if event_data.key not in ["PROXY", "TMDB_API_DOMAIN", "TMDB_API_KEY", "TMDB_LOCALE"]: + return + logger.info("配置变更,重新初始化TheMovieDb模块...") + # 停止模块 + self.stop() + # 初始化模块 + self.init_module() + @staticmethod def get_name() -> str: return "TheMovieDb" @@ -635,7 +652,7 @@ class TheMovieDbModule(_ModuleBase): return medias return [] - def search_persons(self, name: str) -> Optional[List[MediaPerson]]: + def search_persons(self, name: str) -> Optional[List[schemas.MediaPerson]]: """ 搜索人物信息 """ @@ -645,10 +662,10 @@ class TheMovieDbModule(_ModuleBase): return [] results = self.tmdb.search_persons(name) if results: - return [MediaPerson(source='themoviedb', **person) for person in results] + return [schemas.MediaPerson(source='themoviedb', **person) for person in results] return [] - async def async_search_persons(self, name: str) -> Optional[List[MediaPerson]]: + async def async_search_persons(self, name: str) -> Optional[List[schemas.MediaPerson]]: """ 异步搜索人物信息 """ @@ -658,7 +675,7 @@ class TheMovieDbModule(_ModuleBase): return [] results = await self.tmdb.async_search_persons(name) if results: - return [MediaPerson(source='themoviedb', **person) for person in results] + return [schemas.MediaPerson(source='themoviedb', **person) for person in results] return [] def search_collections(self, name: str) -> Optional[List[MediaInfo]]: diff --git a/app/schemas/message.py b/app/schemas/message.py index 187b9798..6894a974 100644 --- a/app/schemas/message.py +++ b/app/schemas/message.py @@ -70,7 +70,7 @@ class Notification(BaseModel): # 用户ID userid: Optional[Union[str, int]] = None # 用户名称 - username: Optional[str] = None + username: Optional[Union[str, int]] = None # 时间 date: Optional[str] = None # 消息方向