fix 聚合结果排序

This commit is contained in:
jxxghp 2024-04-28 12:03:48 +08:00
parent f81af8e9fb
commit 4033ffeb15

View File

@ -1,5 +1,5 @@
from pathlib import Path from pathlib import Path
from typing import List, Any from typing import List, Any, Union
from fastapi import APIRouter, Depends from fastapi import APIRouter, Depends
@ -72,15 +72,29 @@ def search(title: str,
""" """
模糊搜索媒体/人物信息列表 media媒体信息person人物信息 模糊搜索媒体/人物信息列表 media媒体信息person人物信息
""" """
def __get_source(obj: Union[dict, schemas.MediaPerson]):
"""
获取对象属性
"""
if isinstance(obj, dict):
return obj.get("source")
return obj.source
result = []
if type == "media": if type == "media":
_, medias = MediaChain().search(title=title) _, medias = MediaChain().search(title=title)
if medias: if medias:
return [media.to_dict() for media in medias[(page - 1) * count: page * count]] result = [media.to_dict() for media in medias]
else: else:
persons = MediaChain().search_persons(name=title) result = MediaChain().search_persons(name=title)
if persons: if result:
return persons[(page - 1) * count: page * count] # 按设置的顺序对结果进行排序
return [] 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]
@router.get("/scrape", summary="刮削媒体信息", response_model=schemas.Response) @router.get("/scrape", summary="刮削媒体信息", response_model=schemas.Response)