diff --git a/fastanime/cli/utils/player.py b/fastanime/cli/utils/player.py index 41658b3..d92ea35 100644 --- a/fastanime/cli/utils/player.py +++ b/fastanime/cli/utils/player.py @@ -39,7 +39,9 @@ class MpvPlayer(object): translation_type = config.translation_type anime_provider = config.anime_provider + # next or prev if type == "next": + self.mpv_player.print_text("Fetching next episode") next_episode = episodes.index(episode_number) + 1 if next_episode >= len(episodes): next_episode = len(episodes) - 1 @@ -47,12 +49,14 @@ class MpvPlayer(object): episode_number = anilist_config.episode_number config.update_watch_history(anime_id, episodes[next_episode]) else: + self.mpv_player.print_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]) + # update episode progress if config.user and episode_number: AniList.update_anime_list( { @@ -60,6 +64,7 @@ class MpvPlayer(object): "progress": episode_number, } ) + # get them juicy streams episode_streams = anime_provider.get_episode_streams( anime, episode_number, @@ -70,9 +75,9 @@ class MpvPlayer(object): self.mpv_player.print_text("No streams were found") return None + # always select the first selected_server = next(episode_streams) self.current_media_title = selected_server["episode_title"] - self.mpv_player.script_message(f"{self.current_media_title}") links = selected_server["links"] if quality > len(links) - 1: quality = config.quality = len(links) - 1 @@ -87,12 +92,17 @@ class MpvPlayer(object): self.anime_provider = anime_provider self.anilist_config = anilist_config self.config = config + self.last_stop_time: str = "0" + self.last_total_time: str = "0" + self.last_stop_time_secs = 0 + self.last_total_time_secs = 0 + self.current_media_title = "" + mpv_player = mpv.MPV( config=True, input_default_bindings=True, input_vo_keyboard=True, osc=True, - ytdl=True, ) mpv_player.title = title @@ -103,6 +113,16 @@ 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.on_key_press("shift+p") def _previous_episode(): url = self.get_episode("previous") @@ -115,6 +135,7 @@ class MpvPlayer(object): if len(args) > 1: value = args[1] if value is not None: + self.last_stop_time_secs = value self.last_stop_time = format_time(value) @mpv_player.property_observer("time-remaining") @@ -122,10 +143,43 @@ class MpvPlayer(object): if len(args) > 1: value = args[1] if value is not None: + value += self.last_stop_time_secs self.last_total_time = format_time(value) + print(self.last_total_time) + + # 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.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