Add sort_type parameter to subscribe endpoints

Co-authored-by: jxxghp <jxxghp@qq.com>
This commit is contained in:
Cursor Agent
2025-09-16 03:29:28 +00:00
parent 86c7c05cb1
commit 0733c8edcc
3 changed files with 26 additions and 7 deletions

View File

@@ -20,7 +20,7 @@ from app.db.systemconfig_oper import SystemConfigOper
from app.db.user_oper import get_current_active_user_async from app.db.user_oper import get_current_active_user_async
from app.helper.subscribe import SubscribeHelper from app.helper.subscribe import SubscribeHelper
from app.scheduler import Scheduler from app.scheduler import Scheduler
from app.schemas.types import MediaType, EventType, SystemConfigKey from app.schemas.types import MediaType, EventType, SystemConfigKey, SortType
router = APIRouter() router = APIRouter()
@@ -424,6 +424,7 @@ async def popular_subscribes(
genre_id: Optional[int] = None, genre_id: Optional[int] = None,
min_rating: Optional[float] = None, min_rating: Optional[float] = None,
max_rating: Optional[float] = None, max_rating: Optional[float] = None,
sort_type: Optional[str] = None,
_: schemas.TokenPayload = Depends(verify_token)) -> Any: _: schemas.TokenPayload = Depends(verify_token)) -> Any:
""" """
查询热门订阅 查询热门订阅
@@ -434,7 +435,8 @@ async def popular_subscribes(
count=count, count=count,
genre_id=genre_id, genre_id=genre_id,
min_rating=min_rating, min_rating=min_rating,
max_rating=max_rating max_rating=max_rating,
sort_type=sort_type
) )
if subscribes: if subscribes:
ret_medias = [] ret_medias = []
@@ -583,6 +585,7 @@ async def popular_subscribes(
genre_id: Optional[int] = None, genre_id: Optional[int] = None,
min_rating: Optional[float] = None, min_rating: Optional[float] = None,
max_rating: Optional[float] = None, max_rating: Optional[float] = None,
sort_type: Optional[str] = None,
_: schemas.TokenPayload = Depends(verify_token)) -> Any: _: schemas.TokenPayload = Depends(verify_token)) -> Any:
""" """
查询分享的订阅 查询分享的订阅
@@ -593,7 +596,8 @@ async def popular_subscribes(
count=count, count=count,
genre_id=genre_id, genre_id=genre_id,
min_rating=min_rating, min_rating=min_rating,
max_rating=max_rating max_rating=max_rating,
sort_type=sort_type
) )

View File

@@ -133,7 +133,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@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, def get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int] = 30,
genre_id: Optional[int] = None, min_rating: Optional[float] = None, genre_id: Optional[int] = None, min_rating: Optional[float] = None,
max_rating: Optional[float] = None) -> List[dict]: max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
""" """
获取订阅统计数据 获取订阅统计数据
""" """
@@ -154,6 +154,8 @@ class SubscribeHelper(metaclass=WeakSingleton):
params["min_rating"] = min_rating params["min_rating"] = min_rating
if max_rating is not None: if max_rating is not None:
params["max_rating"] = max_rating params["max_rating"] = max_rating
if sort_type is not None:
params["sort_type"] = sort_type
res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params=params) res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params=params)
@@ -162,7 +164,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@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, 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, genre_id: Optional[int] = None, min_rating: Optional[float] = None,
max_rating: Optional[float] = None) -> List[dict]: max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
""" """
异步获取订阅统计数据 异步获取订阅统计数据
""" """
@@ -183,6 +185,8 @@ class SubscribeHelper(metaclass=WeakSingleton):
params["min_rating"] = min_rating params["min_rating"] = min_rating
if max_rating is not None: if max_rating is not None:
params["max_rating"] = max_rating params["max_rating"] = max_rating
if sort_type is not None:
params["sort_type"] = sort_type
res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params=params) res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params=params)
@@ -384,7 +388,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@cached(region=_shares_cache_region, maxsize=1, ttl=1800, skip_empty=True) @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, 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, genre_id: Optional[int] = None, min_rating: Optional[float] = None,
max_rating: Optional[float] = None) -> List[dict]: max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
""" """
获取订阅分享数据 获取订阅分享数据
""" """
@@ -405,6 +409,8 @@ class SubscribeHelper(metaclass=WeakSingleton):
params["min_rating"] = min_rating params["min_rating"] = min_rating
if max_rating is not None: if max_rating is not None:
params["max_rating"] = max_rating params["max_rating"] = max_rating
if sort_type is not None:
params["sort_type"] = sort_type
res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params) res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params)
@@ -413,7 +419,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@cached(region=_shares_cache_region, maxsize=1, ttl=1800, skip_empty=True) @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, 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, genre_id: Optional[int] = None, min_rating: Optional[float] = None,
max_rating: Optional[float] = None) -> List[dict]: max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
""" """
异步获取订阅分享数据 异步获取订阅分享数据
""" """
@@ -434,6 +440,8 @@ class SubscribeHelper(metaclass=WeakSingleton):
params["min_rating"] = min_rating params["min_rating"] = min_rating
if max_rating is not None: if max_rating is not None:
params["max_rating"] = max_rating params["max_rating"] = max_rating
if sort_type is not None:
params["sort_type"] = sort_type
res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params) res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params)

View File

@@ -9,6 +9,13 @@ class MediaType(Enum):
UNKNOWN = '未知' UNKNOWN = '未知'
# 排序类型枚举
class SortType(Enum):
TIME = "time" # 按时间排序
COUNT = "count" # 按人数排序
RATING = "rating" # 按评分排序
# 种子状态 # 种子状态
class TorrentStatus(Enum): class TorrentStatus(Enum):
TRANSFER = "可转移" TRANSFER = "可转移"