feat: musicDetail (#1157)

* feat: musicDetail

* opt: marquee
This commit is contained in:
My-Responsitories
2025-08-28 17:40:12 +08:00
committed by GitHub
parent 84f7f14a29
commit 08a33d9ce5
22 changed files with 1891 additions and 101 deletions

View File

@@ -951,4 +951,12 @@ class Api {
static const String loginDevices =
'${HttpString.passBaseUrl}/x/safecenter/user_login_devices';
static const String bgmDetail = '/x/copyright-music-publicity/bgm/detail';
static const String wishUpdate =
'/x/copyright-music-publicity/bgm/wish/update';
static const String bgmRecommend =
'/x/copyright-music-publicity/bgm/recommend_list';
}

65
lib/http/music.dart Normal file
View File

@@ -0,0 +1,65 @@
import 'package:PiliPlus/http/api.dart';
import 'package:PiliPlus/http/init.dart';
import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models_new/music/bgm_detail.dart';
import 'package:PiliPlus/models_new/music/bgm_recommend_list.dart';
import 'package:PiliPlus/utils/accounts.dart';
import 'package:PiliPlus/utils/wbi_sign.dart';
import 'package:dio/dio.dart';
class MusicHttp {
static Future<LoadingState<MusicDetail>> bgmDetail(String musicId) async {
final res = await Request().get(
Api.bgmDetail,
queryParameters: await WbiSign.makSign({
'music_id': musicId,
'relation_from': 'bgm_page',
}),
);
if (res.data['code'] == 0) {
return Success(MusicDetail.fromJson(res.data['data']));
} else {
return Error(res.data['message']);
}
}
static Future<LoadingState<Null>> wishUpdate(
String musicId,
bool hasLike,
) async {
final res = await Request().post(
Api.wishUpdate,
data: {
'music_id': musicId,
'state': hasLike ? 2 : 1,
'csrf': Accounts.main.csrf,
},
options: Options(contentType: Headers.formUrlEncodedContentType),
);
if (res.data['code'] == 0) {
return const Success(null);
} else {
return Error(res.data['message']);
}
}
static Future<LoadingState<List<BgmRecommend>?>> bgmRecommend(
String musicId,
) async {
final res = await Request().get(
Api.bgmRecommend,
queryParameters: {
'music_id': musicId,
},
);
if (res.data['code'] == 0) {
return Success(
(res.data['data']?['list'] as List?)
?.map((i) => BgmRecommend.fromJson(i))
.toList(),
);
} else {
return Error(res.data['message']);
}
}
}