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.helper.subscribe import SubscribeHelper
from app.scheduler import Scheduler
from app.schemas.types import MediaType, EventType, SystemConfigKey
from app.schemas.types import MediaType, EventType, SystemConfigKey, SortType
router = APIRouter()
@@ -424,6 +424,7 @@ async def popular_subscribes(
genre_id: Optional[int] = None,
min_rating: Optional[float] = None,
max_rating: Optional[float] = None,
sort_type: Optional[str] = None,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
查询热门订阅
@@ -434,7 +435,8 @@ async def popular_subscribes(
count=count,
genre_id=genre_id,
min_rating=min_rating,
max_rating=max_rating
max_rating=max_rating,
sort_type=sort_type
)
if subscribes:
ret_medias = []
@@ -583,6 +585,7 @@ async def popular_subscribes(
genre_id: Optional[int] = None,
min_rating: Optional[float] = None,
max_rating: Optional[float] = None,
sort_type: Optional[str] = None,
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
查询分享的订阅
@@ -593,7 +596,8 @@ async def popular_subscribes(
count=count,
genre_id=genre_id,
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)
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]:
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
if max_rating is not None:
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)
@@ -162,7 +164,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@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,
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
if max_rating is not None:
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)
@@ -384,7 +388,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@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,
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
if max_rating is not None:
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)
@@ -413,7 +419,7 @@ class SubscribeHelper(metaclass=WeakSingleton):
@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,
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
if max_rating is not None:
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)

View File

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