feat: 在订阅统计中添加可选参数

This commit is contained in:
jxxghp
2025-09-16 07:37:14 +08:00
parent 8f2ed1004d
commit 18ff7ce753
2 changed files with 41 additions and 7 deletions
+11 -1
View File
@@ -421,11 +421,21 @@ async def popular_subscribes(
page: Optional[int] = 1, page: Optional[int] = 1,
count: Optional[int] = 30, count: Optional[int] = 30,
min_sub: Optional[int] = None, 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: _: 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: if subscribes:
ret_medias = [] ret_medias = []
for sub in subscribes: for sub in subscribes:
+30 -6
View File
@@ -131,7 +131,9 @@ class SubscribeHelper(metaclass=WeakSingleton):
return [] return []
@cached(region=_shares_cache_region, maxsize=5, ttl=1800, skip_empty=True) @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: if not enabled:
return [] return []
res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params={ params = {
"stype": stype, "stype": stype,
"page": page, "page": page,
"count": count "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) return self._handle_list_response(res)
@cached(region=_shares_cache_region, maxsize=5, ttl=1800, skip_empty=True) @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: if not enabled:
return [] return []
res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params={ params = {
"stype": stype, "stype": stype,
"page": page, "page": page,
"count": count "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) return self._handle_list_response(res)