mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-29 06:03:29 -08:00
feat(anime screen):implement anime dub functionality
This commit is contained in:
@@ -16,11 +16,13 @@ class AnimeScreenController:
|
||||
def get_view(self) -> AnimeScreenView:
|
||||
return self.view
|
||||
|
||||
def fetch_streams(self, anime_title, episode="1"):
|
||||
def fetch_streams(self, anime_title, is_dub=False, episode="1"):
|
||||
if self.view.is_dub:
|
||||
is_dub = self.view.is_dub.active
|
||||
self.view.current_anime_data = self.model.get_anime_data_from_provider(
|
||||
anime_title
|
||||
anime_title, is_dub
|
||||
)
|
||||
self.view.current_links = self.model.get_episode_streams(episode)
|
||||
self.view.current_links = self.model.get_episode_streams(episode, is_dub)
|
||||
# TODO: add auto start
|
||||
#
|
||||
# self.view.current_link = self.view.current_links[0]["gogoanime"][0]
|
||||
|
||||
@@ -45,11 +45,13 @@ class AnimeScreenModel(BaseScreenModel):
|
||||
current_anime_id = "0"
|
||||
current_title = ""
|
||||
|
||||
def get_anime_data_from_provider(self, anime_title: tuple, id=None):
|
||||
def get_anime_data_from_provider(self, anime_title: tuple, is_dub, id=None):
|
||||
if self.current_title == anime_title and self.current_anime_data:
|
||||
return self.current_anime_data
|
||||
|
||||
search_results = anime_provider.search_for_anime(anime_title[0])
|
||||
translation_type = "dub" if is_dub else "sub"
|
||||
search_results = anime_provider.search_for_anime(
|
||||
anime_title[0], translation_type
|
||||
)
|
||||
|
||||
if search_results:
|
||||
_search_results = search_results["shows"]["edges"]
|
||||
@@ -61,15 +63,18 @@ class AnimeScreenModel(BaseScreenModel):
|
||||
self.current_anime_data = anime_provider.get_anime(result["_id"])
|
||||
self.current_title = anime_title
|
||||
return self.current_anime_data
|
||||
return {}
|
||||
|
||||
def get_episode_streams(self, episode, is_dub):
|
||||
translation_type = "dub" if is_dub else "sub"
|
||||
|
||||
def get_episode_streams(self, episode):
|
||||
if cached_episode := Cache.get(
|
||||
"streams.anime", f"{self.current_title}{episode}"
|
||||
"streams.anime", f"{self.current_title}{episode}{is_dub}"
|
||||
):
|
||||
return cached_episode
|
||||
if self.current_anime_data:
|
||||
episode_streams = anime_provider.get_anime_episode(
|
||||
self.current_anime_id, episode
|
||||
self.current_anime_id, episode, translation_type
|
||||
)
|
||||
streams = anime_provider.get_episode_streams(episode_streams)
|
||||
|
||||
@@ -85,7 +90,9 @@ class AnimeScreenModel(BaseScreenModel):
|
||||
}
|
||||
)
|
||||
Cache.append(
|
||||
"streams.anime", f"{self.current_title}{episode}", streams
|
||||
"streams.anime",
|
||||
f"{self.current_title}{episode}{is_dub}",
|
||||
streams,
|
||||
)
|
||||
return streams
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
md_bg_color: self.theme_cls.backgroundColor
|
||||
episodes_container:episodes_container
|
||||
video_player:video_player
|
||||
is_dub:is_dub
|
||||
MDBoxLayout:
|
||||
padding:"10dp"
|
||||
orientation: 'vertical'
|
||||
@@ -54,6 +55,12 @@
|
||||
if root.current_link: app.play_on_mpv(root.current_link)
|
||||
MDButtonText:
|
||||
text:"Play on MPV"
|
||||
AnimeLabel:
|
||||
text:"Dub: "
|
||||
padding: "10dp"
|
||||
adaptive_width:True
|
||||
MDSwitch:
|
||||
id:is_dub
|
||||
AnimeBoxLayout:
|
||||
AnimeLabel:
|
||||
text:"servers: "
|
||||
|
||||
@@ -27,6 +27,7 @@ class AnimeScreenView(BaseScreenView):
|
||||
current_episode = 1
|
||||
video_player = ObjectProperty()
|
||||
current_server = "dropbox"
|
||||
is_dub = ObjectProperty()
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
@@ -65,7 +66,7 @@ class AnimeScreenView(BaseScreenView):
|
||||
|
||||
def update_current_episode(self, episode):
|
||||
self.current_episode = int(episode)
|
||||
self.controller.fetch_streams(self.current_title, episode)
|
||||
self.controller.fetch_streams(self.current_title, self.is_dub.active, episode)
|
||||
self.update_current_video_stream(self.current_server)
|
||||
self.video_player.state = "play"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user