mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: sponsor block
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -46,7 +46,7 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
|
||||
showDanmaku = true;
|
||||
} else if (state == AppLifecycleState.paused) {
|
||||
showDanmaku = false;
|
||||
playerController.danmakuController?.clear();
|
||||
_controller?.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,11 +89,10 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
|
||||
|
||||
// 播放器状态监听
|
||||
void playerListener(PlayerStatus? status) {
|
||||
if (status == PlayerStatus.paused) {
|
||||
_controller?.pause();
|
||||
}
|
||||
if (status == PlayerStatus.playing) {
|
||||
_controller?.onResume();
|
||||
} else {
|
||||
_controller?.pause();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +111,10 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
|
||||
List<DanmakuElem>? currentDanmakuList =
|
||||
_plDanmakuController.getCurrentDanmaku(currentPosition);
|
||||
|
||||
if (showDanmaku && currentDanmakuList != null && _controller != null) {
|
||||
if (showDanmaku &&
|
||||
playerController.playerStatus.status.value == PlayerStatus.playing &&
|
||||
currentDanmakuList != null &&
|
||||
_controller != null) {
|
||||
Color? defaultColor = playerController.blockTypes.contains(6)
|
||||
? DmUtils.decimalToColor(16777215)
|
||||
: null;
|
||||
@@ -132,6 +134,8 @@ class _PlDanmakuState extends State<PlDanmaku> with WidgetsBindingObserver {
|
||||
void dispose() {
|
||||
WidgetsBinding.instance.removeObserver(this);
|
||||
playerController.removePositionListener(videoPositionListen);
|
||||
playerController.removeStatusLister(playerListener);
|
||||
_plDanmakuController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
||||
@@ -176,10 +176,10 @@ class _SponsorBlockPageState extends State<SponsorBlockPage> {
|
||||
),
|
||||
body: CustomScrollView(
|
||||
slivers: [
|
||||
SliverToBoxAdapter(child: _blockLimitItem),
|
||||
SliverToBoxAdapter(child: Divider(height: 1)),
|
||||
SliverToBoxAdapter(child: _userIdItem),
|
||||
SliverToBoxAdapter(child: Divider(height: 1)),
|
||||
SliverToBoxAdapter(child: _blockLimitItem),
|
||||
SliverToBoxAdapter(child: Divider(height: 1)),
|
||||
SliverList.separated(
|
||||
itemCount: _blockSettings.length,
|
||||
itemBuilder: (_, index) => ListTile(
|
||||
|
||||
@@ -449,15 +449,10 @@ class VideoDetailController extends GetxController
|
||||
await plPlayerController.videoPlayerController
|
||||
?.seek(Duration(
|
||||
seconds: item.segment.first));
|
||||
SmartDialog.showToast(
|
||||
'已跳至${Utils.formatDuration(item.segment.first)}',
|
||||
displayType: SmartToastType.normal,
|
||||
);
|
||||
_showBlockToast(
|
||||
'已跳至${Utils.formatDuration(item.segment.first)}');
|
||||
} catch (e) {
|
||||
SmartDialog.showToast(
|
||||
'跳转失败: $e',
|
||||
displayType: SmartToastType.normal,
|
||||
);
|
||||
_showBlockToast('跳转失败: $e');
|
||||
}
|
||||
},
|
||||
style: IconButton.styleFrom(
|
||||
@@ -487,6 +482,15 @@ class VideoDetailController extends GetxController
|
||||
);
|
||||
}
|
||||
|
||||
void _showBlockToast(String msg) {
|
||||
SmartDialog.showToast(
|
||||
msg,
|
||||
displayType: SmartToastType.normal,
|
||||
alignment:
|
||||
plPlayerController.isFullScreen.value ? Alignment(-0.9, 0.5) : null,
|
||||
);
|
||||
}
|
||||
|
||||
Future _sponsorBlock() async {
|
||||
dynamic result = await Request().get(
|
||||
'${HttpString.sponsorBlockBaseUrl}/api/skipSegments',
|
||||
@@ -518,7 +522,6 @@ class VideoDetailController extends GetxController
|
||||
segmentList.value = (result.data as List)
|
||||
.where((item) =>
|
||||
enableList.contains(item['category']) &&
|
||||
// item['segment'][1] > 0 &&
|
||||
item['segment'][1] >= item['segment'][0])
|
||||
.map(
|
||||
(item) {
|
||||
@@ -555,7 +558,7 @@ class VideoDetailController extends GetxController
|
||||
);
|
||||
}).toList();
|
||||
} catch (e) {
|
||||
debugPrint('filed to parse sponsorblock: $e');
|
||||
debugPrint('failed to parse sponsorblock: $e');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -588,17 +591,11 @@ class VideoDetailController extends GetxController
|
||||
?.seek(Duration(seconds: item.segment.second));
|
||||
// await plPlayerController
|
||||
// .seekTo(Duration(seconds: item.segment.second));
|
||||
SmartDialog.showToast(
|
||||
'已跳过${item.segmentType.title}片段',
|
||||
displayType: SmartToastType.normal,
|
||||
);
|
||||
_showBlockToast('已跳过${item.segmentType.title}片段');
|
||||
item.hasSkipped = true;
|
||||
} catch (e) {
|
||||
debugPrint('failed to skip: $e');
|
||||
SmartDialog.showToast(
|
||||
'${item.segmentType.title}片段跳过失败',
|
||||
displayType: SmartToastType.normal,
|
||||
);
|
||||
_showBlockToast('${item.segmentType.title}片段跳过失败');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user