diff --git a/app/api/endpoints/subscribe.py b/app/api/endpoints/subscribe.py index aa74d5db..a8ca59cb 100644 --- a/app/api/endpoints/subscribe.py +++ b/app/api/endpoints/subscribe.py @@ -421,11 +421,21 @@ async def popular_subscribes( page: Optional[int] = 1, count: Optional[int] = 30, min_sub: Optional[int] = None, + genre_id: Optional[int] = None, + min_rating: Optional[float] = None, + max_rating: Optional[float] = None, _: schemas.TokenPayload = Depends(verify_token)) -> Any: """ 查询热门订阅 """ - subscribes = await SubscribeHelper().async_get_statistic(stype=stype, page=page, count=count) + subscribes = await SubscribeHelper().async_get_statistic( + stype=stype, + page=page, + count=count, + genre_id=genre_id, + min_rating=min_rating, + max_rating=max_rating + ) if subscribes: ret_medias = [] for sub in subscribes: diff --git a/app/helper/subscribe.py b/app/helper/subscribe.py index a499ca33..fd061de5 100644 --- a/app/helper/subscribe.py +++ b/app/helper/subscribe.py @@ -131,7 +131,9 @@ class SubscribeHelper(metaclass=WeakSingleton): return [] @cached(region=_shares_cache_region, maxsize=5, ttl=1800, skip_empty=True) - def get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int] = 30) -> List[dict]: + def get_statistic(self, stype: str, 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]: """ 获取订阅统计数据 """ @@ -139,16 +141,28 @@ class SubscribeHelper(metaclass=WeakSingleton): if not enabled: return [] - res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params={ + params = { "stype": stype, "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_statistic, params=params) return self._handle_list_response(res) @cached(region=_shares_cache_region, maxsize=5, ttl=1800, skip_empty=True) - async def async_get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int] = 30) -> List[dict]: + async def async_get_statistic(self, stype: str, 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]: """ 异步获取订阅统计数据 """ @@ -156,11 +170,21 @@ class SubscribeHelper(metaclass=WeakSingleton): if not enabled: return [] - res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params={ + params = { "stype": stype, "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_statistic, params=params) return self._handle_list_response(res)