mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 00:28:18 +08:00
feat: cellular video/audio qa
Closes #52 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -18,6 +18,7 @@ import 'package:PiliPalaX/pages/video/detail/related/controller.dart';
|
||||
import 'package:PiliPalaX/pages/video/detail/reply/controller.dart';
|
||||
import 'package:PiliPalaX/utils/extension.dart';
|
||||
import 'package:canvas_danmaku/models/danmaku_content_item.dart';
|
||||
import 'package:connectivity_plus/connectivity_plus.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:floating/floating.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -206,7 +207,7 @@ class VideoDetailController extends GetxController
|
||||
late PreferredSizeWidget headerControl;
|
||||
|
||||
// late bool enableCDN;
|
||||
late int? cacheVideoQa;
|
||||
int? cacheVideoQa;
|
||||
late String cacheDecode;
|
||||
late String cacheSecondDecode;
|
||||
late int cacheAudioQa;
|
||||
@@ -303,16 +304,11 @@ class VideoDetailController extends GetxController
|
||||
// CDN优化
|
||||
// enableCDN = setting.get(SettingBoxKey.enableCDN, defaultValue: true);
|
||||
|
||||
// 预设的画质
|
||||
cacheVideoQa = setting.get(SettingBoxKey.defaultVideoQa,
|
||||
defaultValue: VideoQuality.values.last.code);
|
||||
// 预设的解码格式
|
||||
cacheDecode = setting.get(SettingBoxKey.defaultDecode,
|
||||
defaultValue: VideoDecodeFormats.values.last.code);
|
||||
cacheSecondDecode = setting.get(SettingBoxKey.secondDecode,
|
||||
defaultValue: VideoDecodeFormats.values[1].code);
|
||||
cacheAudioQa = setting.get(SettingBoxKey.defaultAudioQa,
|
||||
defaultValue: AudioQuality.hiRes.code);
|
||||
oid.value = IdUtils.bv2av(Get.parameters['bvid']!);
|
||||
enableSponsorBlock =
|
||||
setting.get(SettingBoxKey.enableSponsorBlock, defaultValue: false);
|
||||
@@ -1013,6 +1009,21 @@ class VideoDetailController extends GetxController
|
||||
|
||||
// 视频链接
|
||||
Future queryVideoUrl() async {
|
||||
if (cacheVideoQa == null) {
|
||||
await Utils.checkConnectivity().then((res) {
|
||||
cacheVideoQa = res == ConnectivityResult.mobile
|
||||
? setting.get(SettingBoxKey.defaultVideoQaCellular,
|
||||
defaultValue: VideoQuality.high1080.code)
|
||||
: setting.get(SettingBoxKey.defaultVideoQa,
|
||||
defaultValue: VideoQuality.values.last.code);
|
||||
|
||||
cacheAudioQa = res == ConnectivityResult.mobile
|
||||
? setting.get(SettingBoxKey.defaultAudioQaCellular,
|
||||
defaultValue: AudioQuality.k192.code)
|
||||
: setting.get(SettingBoxKey.defaultAudioQa,
|
||||
defaultValue: AudioQuality.hiRes.code);
|
||||
});
|
||||
}
|
||||
var result = await VideoHttp.videoUrl(cid: cid.value, bvid: bvid);
|
||||
if (result['status']) {
|
||||
data = result['data'];
|
||||
|
||||
@@ -808,21 +808,21 @@ class _HeaderControlState extends State<HeaderControl> {
|
||||
videoFormat[i].quality) {
|
||||
return;
|
||||
}
|
||||
Get.back();
|
||||
final int quality = videoFormat[i].quality!;
|
||||
widget.videoDetailCtr!.currentVideoQa =
|
||||
VideoQualityCode.fromCode(quality)!;
|
||||
String oldQualityDesc =
|
||||
VideoQualityCode.fromCode(setting.get(
|
||||
SettingBoxKey.defaultVideoQa,
|
||||
defaultValue:
|
||||
VideoQuality.values.last.code))!
|
||||
.description;
|
||||
setting.put(
|
||||
SettingBoxKey.defaultVideoQa, quality);
|
||||
SmartDialog.showToast(
|
||||
"默认画质由:$oldQualityDesc 变为:${VideoQualityCode.fromCode(quality)!.description}");
|
||||
widget.videoDetailCtr!.updatePlayer();
|
||||
Get.back();
|
||||
// String oldQualityDesc =
|
||||
// VideoQualityCode.fromCode(setting.get(
|
||||
// SettingBoxKey.defaultVideoQa,
|
||||
// defaultValue:
|
||||
// VideoQuality.values.last.code))!
|
||||
// .description;
|
||||
// setting.put(
|
||||
// SettingBoxKey.defaultVideoQa, quality);
|
||||
// SmartDialog.showToast(
|
||||
// "默认画质由:$oldQualityDesc 变为:${VideoQualityCode.fromCode(quality)!.description}");
|
||||
},
|
||||
// 可能包含会员解锁画质
|
||||
enabled: i >= totalQaSam - userfulQaSam,
|
||||
@@ -897,20 +897,20 @@ class _HeaderControlState extends State<HeaderControl> {
|
||||
if (currentAudioQa.code == i.id) {
|
||||
return;
|
||||
}
|
||||
Get.back();
|
||||
final int quality = i.id!;
|
||||
widget.videoDetailCtr!.currentAudioQa =
|
||||
AudioQualityCode.fromCode(quality)!;
|
||||
String oldQualityDesc = AudioQualityCode.fromCode(
|
||||
setting.get(SettingBoxKey.defaultAudioQa,
|
||||
defaultValue:
|
||||
AudioQuality.values.last.code))!
|
||||
.description;
|
||||
setting.put(
|
||||
SettingBoxKey.defaultAudioQa, quality);
|
||||
SmartDialog.showToast(
|
||||
"默认音质由:$oldQualityDesc 变为:${AudioQualityCode.fromCode(quality)!.description}");
|
||||
widget.videoDetailCtr!.updatePlayer();
|
||||
Get.back();
|
||||
// String oldQualityDesc = AudioQualityCode.fromCode(
|
||||
// setting.get(SettingBoxKey.defaultAudioQa,
|
||||
// defaultValue:
|
||||
// AudioQuality.values.last.code))!
|
||||
// .description;
|
||||
// setting.put(
|
||||
// SettingBoxKey.defaultAudioQa, quality);
|
||||
// SmartDialog.showToast(
|
||||
// "默认音质由:$oldQualityDesc 变为:${AudioQualityCode.fromCode(quality)!.description}");
|
||||
},
|
||||
contentPadding:
|
||||
const EdgeInsets.only(left: 20, right: 20),
|
||||
@@ -1763,11 +1763,15 @@ class _HeaderControlState extends State<HeaderControl> {
|
||||
icon: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
Icon(Icons.shield, size: 18),
|
||||
Icon(
|
||||
Icons.shield_outlined,
|
||||
size: 19,
|
||||
color: Colors.white,
|
||||
),
|
||||
Icon(
|
||||
Icons.play_arrow_rounded,
|
||||
size: 17,
|
||||
color: Colors.black87,
|
||||
size: 13,
|
||||
color: Colors.white,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user