feat: new pgc rank

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-25 19:44:11 +08:00
parent f10aa38bfd
commit 1e851d34b6
14 changed files with 393 additions and 140 deletions

View File

@@ -691,6 +691,10 @@ class Api {
/// 排行榜
static const String getRankApi = "/x/web-interface/ranking/v2";
static const String pgcRank = "/pgc/web/rank/list";
static const String pgcSeasonRank = "/pgc/season/rank/web/list";
/// 取消订阅-合集
static const String unfavSeason = '/x/v3/fav/season/unfav';

View File

@@ -3,6 +3,7 @@ import 'dart:developer';
import 'package:PiliPlus/grpc/app/card/v1/card.pb.dart' as card;
import 'package:PiliPlus/grpc/grpc_repo.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/bangumi/pgc_rank/pgc_rank_item_model.dart';
import 'package:PiliPlus/models/member/article.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:dio/dio.dart';
@@ -966,8 +967,13 @@ class VideoHttp {
// 视频排行
static Future<LoadingState<List<HotVideoItemModel>>> getRankVideoList(
int rid) async {
var rankApi = "${Api.getRankApi}?rid=$rid&type=all";
var res = await Request().get(rankApi);
var res = await Request().get(
Api.getRankApi,
queryParameters: await WbiSign.makSign({
'rid': rid,
'type': 'all',
}),
);
if (res.data['code'] == 0) {
List<HotVideoItemModel> list = <HotVideoItemModel>[];
Set<int> blackMids = GStorage.blackMids;
@@ -990,6 +996,44 @@ class VideoHttp {
}
}
// pgc 排行
static Future<LoadingState> pgcRankList(
{int day = 3, required int seasonType}) async {
var res = await Request().get(
Api.pgcRank,
queryParameters: await WbiSign.makSign({
'day': day,
'season_type': seasonType,
}),
);
if (res.data['code'] == 0) {
return LoadingState.success((res.data['result']?['list'] as List?)
?.map((e) => PgcRankItemModel.fromJson(e))
.toList());
} else {
return LoadingState.error(res.data['message']);
}
}
// pgc season 排行
static Future<LoadingState> pgcSeasonRankList(
{int day = 3, required int seasonType}) async {
var res = await Request().get(
Api.pgcSeasonRank,
queryParameters: await WbiSign.makSign({
'day': day,
'season_type': seasonType,
}),
);
if (res.data['code'] == 0) {
return LoadingState.success((res.data['data']?['list'] as List?)
?.map((e) => PgcRankItemModel.fromJson(e))
.toList());
} else {
return LoadingState.error(res.data['message']);
}
}
static Future<LoadingState> getVideoNoteList({
dynamic oid,
dynamic uperMid,