From 86c7c05cb13537237745f94aa3fe55e5c4aa3cbd Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 16 Sep 2025 07:38:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E8=8E=B7=E5=8F=96=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E5=88=86=E4=BA=AB=E6=95=B0=E6=8D=AE=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E4=B8=AD=E6=B7=BB=E5=8A=A0=E5=8F=AF=E9=80=89=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/endpoints/subscribe.py | 12 ++++++++++- app/helper/subscribe.py | 37 +++++++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index a8ca59cb..0abedab6 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -580,11 +580,21 @@ async def popular_subscribes( name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30, + genre_id: Optional[int] = None, + min_rating: Optional[float] = None, + max_rating: Optional[float] = None, _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 查询分享的订阅 """ - return await SubscribeHelper().async_get_shares(name=name, page=page, count=count) + return await SubscribeHelper().async_get_shares( + name=name, + page=page, + count=count, + genre_id=genre_id, + min_rating=min_rating, + max_rating=max_rating + ) @router.get("/share/statistics", summary="查询订阅分享统计", response_model=List[schemas.SubscribeShareStatistics]) diff --git a/app/helper/subscribe.py b/app/helper/subscribe.py index fd061de5..218a07a0 100644 --- a/app/helper/subscribe.py +++ b/app/helper/subscribe.py @@ -382,7 +382,9 @@ class SubscribeHelper(metaclass=WeakSingleton): return self._handle_response(res, clear_cache=False) @cached(region=_shares_cache_region, maxsize=1, ttl=1800, skip_empty=True) - def get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30) -> List[dict]: + def get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30, + genre_id: Optional[int] = None, min_rating: Optional[float] = None, + max_rating: Optional[float] = None) -> List[dict]: """ 获取订阅分享数据 """ @@ -390,17 +392,28 @@ class SubscribeHelper(metaclass=WeakSingleton): if not enabled: return [] - res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params={ + params = { "name": name, "page": page, "count": count - }) + } + + # 添加可选参数 + if genre_id is not None: + params["genre_id"] = genre_id + if min_rating is not None: + params["min_rating"] = min_rating + if max_rating is not None: + params["max_rating"] = max_rating + + res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params) return self._handle_list_response(res) @cached(region=_shares_cache_region, maxsize=1, ttl=1800, skip_empty=True) - async def async_get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30) -> \ - List[dict]: + async def async_get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30, + genre_id: Optional[int] = None, min_rating: Optional[float] = None, + max_rating: Optional[float] = None) -> List[dict]: """ 异步获取订阅分享数据 """ @@ -408,11 +421,21 @@ class SubscribeHelper(metaclass=WeakSingleton): if not enabled: return [] - res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params={ + params = { "name": name, "page": page, "count": count - }) + } + + # 添加可选参数 + if genre_id is not None: + params["genre_id"] = genre_id + if min_rating is not None: + params["min_rating"] = min_rating + if max_rating is not None: + params["max_rating"] = max_rating + + res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params) return self._handle_list_response(res)