mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
Add sort_type parameter to subscribe endpoints
Co-authored-by: jxxghp <jxxghp@qq.com>
This commit is contained in:
@@ -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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|
||||||
|
|||||||
@@ -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 = "可转移"
|
||||||
|
|||||||
Reference in New Issue
Block a user