From 5162b2748ee78e8496f301ee735682c6ce536b6f Mon Sep 17 00:00:00 2001 From: Attente <19653207+wikrin@users.noreply.github.com> Date: Sun, 23 Nov 2025 13:28:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(media):=20=E4=BF=AE=E5=A4=8D=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/media.py | 31 ++++++++++++++++--------------- app/schemas/message.py | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/api/endpoints/media.py b/app/api/endpoints/media.py index 1ebf4646..81c55e42 100644 --- a/app/api/endpoints/media.py +++ b/app/api/endpoints/media.py @@ -85,25 +85,26 @@ async def search(title: str, return obj.get("source") return obj.source - result = [] media_chain = MediaChain() if type == "media": _, medias = await media_chain.async_search(title=title) - if medias: - result = [media.to_dict() for media in medias] + result = [media.to_dict() for media in medias] if medias else [] elif type == "collection": - result = await media_chain.async_search_collections(name=title) - else: - result = await media_chain.async_search_persons(name=title) - if result: - # 按设置的顺序对结果进行排序 - setting_order = settings.SEARCH_SOURCE.split(',') or [] - sort_order = {} - for index, source in enumerate(setting_order): - sort_order[source] = index - result = sorted(result, key=lambda x: sort_order.get(__get_source(x), 4)) - return result[(page - 1) * count:page * count] - return [] + collections = await media_chain.async_search_collections(name=title) + result = [collection.to_dict() for collection in collections] if collections else [] + else: # person + persons = await media_chain.async_search_persons(name=title) + result = [person.model_dump() for person in persons] if persons else [] + + if not result: + return [] + + # 排序和分页 + setting_order = settings.SEARCH_SOURCE.split(',') if settings.SEARCH_SOURCE else [] + sort_order = {source: index for index, source in enumerate(setting_order)} + + sorted_result = sorted(result, key=lambda x: sort_order.get(__get_source(x), 4)) + return sorted_result[(page - 1) * count:page * count] @router.post("/scrape/{storage}", summary="刮削媒体信息", response_model=schemas.Response) diff --git a/app/schemas/message.py b/app/schemas/message.py index f3a66aec..187b9798 100644 --- a/app/schemas/message.py +++ b/app/schemas/message.py @@ -14,7 +14,7 @@ class CommingMessage(BaseModel): # 用户ID userid: Optional[Union[str, int]] = None # 用户名称 - username: Optional[str] = None + username: Optional[Union[str, int]] = None # 消息渠道 channel: Optional[MessageChannel] = None # 来源(渠道名称)