diff --git a/lib/eval/dart/model/m_bridge.dart b/lib/eval/dart/model/m_bridge.dart index bf6127a..2ddfc96 100644 --- a/lib/eval/dart/model/m_bridge.dart +++ b/lib/eval/dart/model/m_bridge.dart @@ -575,14 +575,18 @@ class MBridge { static String cryptoHandler( String text, String iv, String secretKeyString, bool encrypt) { - if (encrypt) { - final encryptt = _encrypt(secretKeyString, iv); - final en = encryptt.$1.encrypt(text, iv: encryptt.$2); - return en.base64; - } else { - final encryptt = _encrypt(secretKeyString, iv); - final en = encryptt.$1.decrypt64(text, iv: encryptt.$2); - return en; + try { + if (encrypt) { + final encryptt = _encrypt(secretKeyString, iv); + final en = encryptt.$1.encrypt(text, iv: encryptt.$2); + return en.base64; + } else { + final encryptt = _encrypt(secretKeyString, iv); + final en = encryptt.$1.decrypt64(text, iv: encryptt.$2); + return en; + } + } catch (_) { + return text; } } } diff --git a/lib/modules/anime/anime_player_view.dart b/lib/modules/anime/anime_player_view.dart index 98a24da..21df3c6 100644 --- a/lib/modules/anime/anime_player_view.dart +++ b/lib/modules/anime/anime_player_view.dart @@ -145,7 +145,7 @@ class _AnimeStreamPageState extends riv.ConsumerState headers: _firstVid.headers)); final ValueNotifier _playbackSpeed = ValueNotifier(1.0); - bool _initSubtitle = true; + bool _initSubtitleAndAudio = true; final ValueNotifier _enterFullScreen = ValueNotifier(false); late final ValueNotifier _currentPosition = ValueNotifier(_streamController.geTCurrentPosition()); @@ -164,24 +164,25 @@ class _AnimeStreamPageState extends riv.ConsumerState _currentPosition.value = position; if ((_firstVid.subtitles ?? []).isNotEmpty) { - if (_initSubtitle) { + if (_initSubtitleAndAudio) { try { if (_firstVid.subtitles?.isNotEmpty ?? false) { - _player.setSubtitleTrack(SubtitleTrack.uri( - _firstVid.subtitles?.first.file ?? "", - title: _firstVid.subtitles?.first.label, - language: _firstVid.subtitles?.first.label)); + final file = _firstVid.subtitles?.first.file ?? ""; + final label = _firstVid.subtitles?.first.label; + _player.setSubtitleTrack(file.startsWith("http") + ? SubtitleTrack.uri(file, title: label, language: label) + : SubtitleTrack.data(file, title: label, language: label)); } } catch (_) {} try { if (_firstVid.audios?.isNotEmpty ?? false) { - _player.setSubtitleTrack(SubtitleTrack.uri( + _player.setAudioTrack(AudioTrack.uri( _firstVid.audios?.first.file ?? "", title: _firstVid.audios?.first.label, language: _firstVid.audios?.first.label)); } } catch (_) {} - _initSubtitle = false; + _initSubtitleAndAudio = false; } } }, @@ -415,10 +416,13 @@ class _AnimeStreamPageState extends riv.ConsumerState for (var video in widget.videos) { for (var sub in video.subtitles ?? []) { if (!subs.contains(sub.file)) { + final file = sub.file!; + final label = sub.label; videoSubtitle.add(VideoPrefs( isLocal: false, - subtitle: SubtitleTrack.uri(sub.file!, - title: sub.label, language: sub.label))); + subtitle: file.startsWith("http") + ? SubtitleTrack.uri(file, title: label, language: label) + : SubtitleTrack.data(file, title: label, language: label))); subs.add(sub.file!); } } @@ -990,9 +994,7 @@ class _AnimeStreamPageState extends riv.ConsumerState await Future.delayed(const Duration(milliseconds: 100)); if (mounted) { _key.currentState?.update( - fit: fit, - width: context.width(1), - height: context.height(1)); + fit: fit, width: context.width(1), height: context.height(1)); } }