feat: dlna

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-11-12 19:02:40 +08:00
parent 0acd9ca767
commit 37b1228552
11 changed files with 257 additions and 41 deletions

View File

@@ -24,6 +24,8 @@ class Api {
static const String pugvUrl = '/pugv/player/web/playurl';
static const String tvPlayUrl = '/x/tv/playurl';
// 字幕
// aid, cid
static const String playInfo = '/x/player/wbi/v2';

View File

@@ -204,11 +204,7 @@ abstract final class LiveHttp {
'statistics': Constants.statisticsApp,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(
params,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(params);
var res = await Request().get(
Api.liveFeedIndex,
queryParameters: params,
@@ -290,11 +286,7 @@ abstract final class LiveHttp {
'statistics': Constants.statisticsApp,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(
params,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(params);
var res = await Request().get(
Api.liveSecondList,
queryParameters: params,
@@ -340,11 +332,7 @@ abstract final class LiveHttp {
'statistics': Constants.statisticsApp,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(
params,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(params);
var res = await Request().get(
Api.liveAreaList,
queryParameters: params,
@@ -377,11 +365,7 @@ abstract final class LiveHttp {
'statistics': Constants.statisticsApp,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(
params,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(params);
var res = await Request().get(
Api.getLiveFavTag,
queryParameters: params,
@@ -419,11 +403,7 @@ abstract final class LiveHttp {
'statistics': Constants.statisticsApp,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(
data,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(data);
var res = await Request().post(
Api.setLiveFavTag,
data: data,
@@ -459,11 +439,7 @@ abstract final class LiveHttp {
'statistics': Constants.statisticsApp,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(
params,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(params);
var res = await Request().get(
Api.liveRoomAreaList,
queryParameters: params,
@@ -502,11 +478,7 @@ abstract final class LiveHttp {
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
'type': type.name,
};
AppSign.appSign(
params,
Constants.appKey,
Constants.appSec,
);
AppSign.appSign(params);
var res = await Request().get(
Api.liveSearch,
queryParameters: params,

View File

@@ -26,6 +26,7 @@ import 'package:PiliPlus/models_new/video/video_note_list/data.dart';
import 'package:PiliPlus/models_new/video/video_play_info/data.dart';
import 'package:PiliPlus/models_new/video/video_relation/data.dart';
import 'package:PiliPlus/utils/accounts.dart';
import 'package:PiliPlus/utils/app_sign.dart';
import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/id_utils.dart';
@@ -1060,4 +1061,39 @@ class VideoHttp {
return Error(res.data['message']);
}
}
static Future<LoadingState<PlayUrlModel>> tvPlayUrl({
required int cid,
required int objectId, // aid, epid
required int playurlType, // ugc 1, pgc 2
int? qn,
}) async {
final accessKey = Accounts.accountMode[AccountType.video.index].accessKey;
final params = {
'access_key': ?accessKey,
'actionKey': 'appkey',
'appkey': Constants.appKey,
'cid': cid,
'fourk': 1,
'is_proj': 1,
'mobile_access_key': ?accessKey,
'object_id': objectId,
'mobi_app': 'android',
'platform': 'android',
'playurl_type': playurlType,
'protocol': 0,
'qn': qn ?? 80,
'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000,
};
AppSign.appSign(params);
final res = await Request().get(
Api.tvPlayUrl,
queryParameters: params,
);
if (res.data['code'] == 0) {
return Success(PlayUrlModel.fromJson(res.data['data']));
} else {
return Error(res.data['message']);
}
}
}