Skip to content

Commit d463b5b

Browse files
authored
Merge pull request jxxghp#4955 from jxxghp/cursor/add-sort-type-to-subscription-queries-af67
2 parents 86c7c05 + 0733c8e commit d463b5b

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

app/api/endpoints/subscribe.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from app.db.user_oper import get_current_active_user_async
2121
from app.helper.subscribe import SubscribeHelper
2222
from app.scheduler import Scheduler
23-
from app.schemas.types import MediaType, EventType, SystemConfigKey
23+
from app.schemas.types import MediaType, EventType, SystemConfigKey, SortType
2424

2525
router = APIRouter()
2626

@@ -424,6 +424,7 @@ async def popular_subscribes(
424424
genre_id: Optional[int] = None,
425425
min_rating: Optional[float] = None,
426426
max_rating: Optional[float] = None,
427+
sort_type: Optional[str] = None,
427428
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
428429
"""
429430
查询热门订阅
@@ -434,7 +435,8 @@ async def popular_subscribes(
434435
count=count,
435436
genre_id=genre_id,
436437
min_rating=min_rating,
437-
max_rating=max_rating
438+
max_rating=max_rating,
439+
sort_type=sort_type
438440
)
439441
if subscribes:
440442
ret_medias = []
@@ -583,6 +585,7 @@ async def popular_subscribes(
583585
genre_id: Optional[int] = None,
584586
min_rating: Optional[float] = None,
585587
max_rating: Optional[float] = None,
588+
sort_type: Optional[str] = None,
586589
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
587590
"""
588591
查询分享的订阅
@@ -593,7 +596,8 @@ async def popular_subscribes(
593596
count=count,
594597
genre_id=genre_id,
595598
min_rating=min_rating,
596-
max_rating=max_rating
599+
max_rating=max_rating,
600+
sort_type=sort_type
597601
)
598602

599603

app/helper/subscribe.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def _handle_list_response(res) -> List[dict]:
133133
@cached(region=_shares_cache_region, maxsize=5, ttl=1800, skip_empty=True)
134134
def get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int] = 30,
135135
genre_id: Optional[int] = None, min_rating: Optional[float] = None,
136-
max_rating: Optional[float] = None) -> List[dict]:
136+
max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
137137
"""
138138
获取订阅统计数据
139139
"""
@@ -154,6 +154,8 @@ def get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int
154154
params["min_rating"] = min_rating
155155
if max_rating is not None:
156156
params["max_rating"] = max_rating
157+
if sort_type is not None:
158+
params["sort_type"] = sort_type
157159

158160
res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params=params)
159161

@@ -162,7 +164,7 @@ def get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int
162164
@cached(region=_shares_cache_region, maxsize=5, ttl=1800, skip_empty=True)
163165
async def async_get_statistic(self, stype: str, page: Optional[int] = 1, count: Optional[int] = 30,
164166
genre_id: Optional[int] = None, min_rating: Optional[float] = None,
165-
max_rating: Optional[float] = None) -> List[dict]:
167+
max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
166168
"""
167169
异步获取订阅统计数据
168170
"""
@@ -183,6 +185,8 @@ async def async_get_statistic(self, stype: str, page: Optional[int] = 1, count:
183185
params["min_rating"] = min_rating
184186
if max_rating is not None:
185187
params["max_rating"] = max_rating
188+
if sort_type is not None:
189+
params["sort_type"] = sort_type
186190

187191
res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_statistic, params=params)
188192

@@ -384,7 +388,7 @@ async def async_sub_fork(self, share_id: int) -> Tuple[bool, str]:
384388
@cached(region=_shares_cache_region, maxsize=1, ttl=1800, skip_empty=True)
385389
def get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30,
386390
genre_id: Optional[int] = None, min_rating: Optional[float] = None,
387-
max_rating: Optional[float] = None) -> List[dict]:
391+
max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
388392
"""
389393
获取订阅分享数据
390394
"""
@@ -405,6 +409,8 @@ def get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count:
405409
params["min_rating"] = min_rating
406410
if max_rating is not None:
407411
params["max_rating"] = max_rating
412+
if sort_type is not None:
413+
params["sort_type"] = sort_type
408414

409415
res = RequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params)
410416

@@ -413,7 +419,7 @@ def get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count:
413419
@cached(region=_shares_cache_region, maxsize=1, ttl=1800, skip_empty=True)
414420
async def async_get_shares(self, name: Optional[str] = None, page: Optional[int] = 1, count: Optional[int] = 30,
415421
genre_id: Optional[int] = None, min_rating: Optional[float] = None,
416-
max_rating: Optional[float] = None) -> List[dict]:
422+
max_rating: Optional[float] = None, sort_type: Optional[str] = None) -> List[dict]:
417423
"""
418424
异步获取订阅分享数据
419425
"""
@@ -434,6 +440,8 @@ async def async_get_shares(self, name: Optional[str] = None, page: Optional[int]
434440
params["min_rating"] = min_rating
435441
if max_rating is not None:
436442
params["max_rating"] = max_rating
443+
if sort_type is not None:
444+
params["sort_type"] = sort_type
437445

438446
res = await AsyncRequestUtils(proxies=settings.PROXY, timeout=15).get_res(self._sub_shares, params=params)
439447

app/schemas/types.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ class MediaType(Enum):
99
UNKNOWN = '未知'
1010

1111

12+
# 排序类型枚举
13+
class SortType(Enum):
14+
TIME = "time" # 按时间排序
15+
COUNT = "count" # 按人数排序
16+
RATING = "rating" # 按评分排序
17+
18+
1219
# 种子状态
1320
class TorrentStatus(Enum):
1421
TRANSFER = "可转移"

0 commit comments

Comments
 (0)