feat: danmaku chart (#192)

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
dom
2025-01-31 11:36:05 +08:00
committed by GitHub
parent 58a7cf1e75
commit 7ba9646d38
9 changed files with 223 additions and 78 deletions

View File

@@ -1004,6 +1004,7 @@ class VideoDetailController extends GetxController
vttSubtitles: _vttSubtitles,
vttSubtitlesIndex: vttSubtitlesIndex,
showVP: showVP,
dmTrend: dmTrend,
// 硬解
enableHA: enableHA.value,
hwdec: hwdec.value,
@@ -1037,6 +1038,10 @@ class VideoDetailController extends GetxController
_getSubtitle();
}
if (showDmChart && dmTrend == null) {
_getDmTrend();
}
/// 开启自动全屏时在player初始化完成后立即传入headerControl
plPlayerController.headerControl = headerControl;
@@ -1970,6 +1975,7 @@ class VideoDetailController extends GetxController
audioUrl = null;
// danmaku
dmTrend = null;
savedDanmaku = null;
// subtitle
@@ -1985,4 +1991,31 @@ class VideoDetailController extends GetxController
segmentList.clear();
_segmentProgressList = null;
}
late final showDmChart = GStorage.showDmChart;
List? dmTrend;
void _getDmTrend() async {
dmTrend = [];
try {
dynamic res = await Request().get(
'https://bvc.bilivideo.com/pbp/data',
queryParameters: {
'bvid': bvid,
'cid': cid.value,
},
);
int stepSec = (res.data['step_sec'] as num?)?.toInt() ?? 0;
late List events = (res.data['events']['default'] as List?) ?? [];
if (stepSec != 0 && events.isNotEmpty) {
dmTrend = events;
if (plPlayerController.dmTrend.isEmpty) {
plPlayerController.dmTrend.value = events;
}
}
} catch (e) {
debugPrint('_getDmTrend: $e');
}
}
}