From b52a49e744399e1dbc8f5a2781549730b7bba289 Mon Sep 17 00:00:00 2001 From: Benex254 Date: Wed, 7 Aug 2024 14:37:17 +0300 Subject: [PATCH] feat(mpv): some optimization --- fastanime/cli/utils/player.py | 72 ++++++++++++----------------------- 1 file changed, 24 insertions(+), 48 deletions(-) diff --git a/fastanime/cli/utils/player.py b/fastanime/cli/utils/player.py index 676f7c3..f2da2c8 100644 --- a/fastanime/cli/utils/player.py +++ b/fastanime/cli/utils/player.py @@ -38,26 +38,30 @@ class MpvPlayer(object): anime = anilist_config.anime translation_type = config.translation_type anime_provider = config.anime_provider + self.last_stop_time: str = "0" + self.last_total_time: str = "0" + self.last_stop_time_secs = 0 + self.last_total_time_secs = 0 # next or prev if type == "next": - self.mpv_player.print_text("Fetching next episode") + self.mpv_player.show_text("Fetching next episode...") next_episode = episodes.index(episode_number) + 1 if next_episode >= len(episodes): next_episode = len(episodes) - 1 anilist_config.episode_number = episodes[next_episode] episode_number = anilist_config.episode_number - config.update_watch_history(anime_id, episodes[next_episode]) + config.update_watch_history(anime_id, str(episode_number)) elif type == "reload": - episode_number = anilist_config.episode_number + self.mpv_player.show_text("Replaying Episode...") else: - self.mpv_player.print_text("Fetching previous episode") + self.mpv_player.show_text("Fetching previous episode...") prev_episode = episodes.index(episode_number) - 1 if prev_episode <= 0: prev_episode = 0 anilist_config.episode_number = episodes[prev_episode] episode_number = anilist_config.episode_number - config.update_watch_history(anime_id, episodes[prev_episode]) + config.update_watch_history(anime_id, str(episode_number)) # update episode progress if config.user and episode_number: AniList.update_anime_list( @@ -74,7 +78,7 @@ class MpvPlayer(object): anilist_config.selected_anime_anilist, ) if not episode_streams: - self.mpv_player.print_text("No streams were found") + self.mpv_player.show_text("No streams were found") return None # always select the first @@ -115,15 +119,11 @@ class MpvPlayer(object): mpv_player.loadfile(url, options=f"title={self.current_media_title}") mpv_player.title = self.current_media_title - # TODO: select episode from mpv - # - # @mpv_player.on_key_press("shift+e") - # def _episodes(): - # mpv_player - # url = self.get_episode("next") - # if url: - # mpv_player.loadfile(url, options=f"title={self.current_media_title}") - # mpv_player.title = self.current_media_title + @mpv_player.event_callback("file-loaded") + def set_total_time(event, *args): + d = mpv_player._get_property("duration") + if isinstance(d, float): + self.last_total_time = format_time(d) @mpv_player.on_key_press("shift+p") def _previous_episode(): @@ -135,12 +135,20 @@ class MpvPlayer(object): @mpv_player.on_key_press("shift+a") def _toggle_auto_next(): config.auto_next = not config.auto_next + if config.auto_next: + mpv_player.show_text("Auto next enabled") + else: + mpv_player.show_text("Auto next disabled") @mpv_player.on_key_press("shift+t") def _toggle_translation_type(): config.translation_type = ( "sub" if config.translation_type == "dub" else "dub" ) + if config.translation_type == "dub": + mpv_player.show_text("Translation Type set to dub") + else: + mpv_player.show_text("Translation Type set to sub") @mpv_player.on_key_press("shift+r") def _reload(): @@ -163,8 +171,6 @@ class MpvPlayer(object): value = args[1] if value is not None: rem_time = value - value += self.last_stop_time_secs - self.last_total_time = format_time(value) if rem_time < 10 and config.auto_next: url = self.get_episode("next") if url: @@ -173,39 +179,9 @@ class MpvPlayer(object): ) mpv_player.title = self.current_media_title - # TODO: custom skip functionality based on chapterskip. - # - # @mpv_player.property_observer("chapter-number") - # def chapterskip(_, current_chapter: int): - # mpv_player - # chapters = mpv_player..get_property_native("chapter-list") - - # skipped={"1":1} - # skip = false - # for i, chapter in enumerate(chapters): - # if (not options.skip_once or not skipped[i]) and matches(i, chapter.title): - # if i == current_chapter + 1 or skip == i - 1: - # if skip: - # skipped[skip] = true - # skip = i - # elif skip: - # mpv_player.set_property("time-pos", chapter.time) - # skipped[skip] = true - # return - # if skip: - # if mpv_player.get_property_native("playlist-count") == mpv_player.get_property_native("playlist-pos-1"): - # return self.mpv_player.set_property("time-pos", mpv_player.get_property_native("duration")) - # mpv_player.command("playlist-next") - # - mpv_player.observe_property("time-pos", handle_time_start_update) + mpv_player.register_event_callback(set_total_time) mpv_player.observe_property("time-remaining", handle_time_remaining_update) - # mpv_player.observe_property("chapter-number", chapterskip) - # mpv_player.register_event("file-loaded", function() skipped = {} end) - self.mpv_player = mpv_player - return mpv_player - - # mpv_player.register_event("file-loaded", function() skipped = {} end) self.mpv_player = mpv_player return mpv_player