mirror of
https://github.com/Benexl/FastAnime.git
synced 2025-12-25 20:34:26 -08:00
82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
from kivy.properties import ListProperty, ObjectProperty, StringProperty
|
|
|
|
from kivy.uix.widget import Factory
|
|
from kivymd.uix.button import MDButton
|
|
|
|
from ...View.base_screen import BaseScreenView
|
|
|
|
|
|
class EpisodeButton(MDButton):
|
|
text = StringProperty()
|
|
change_episode_callback = ObjectProperty()
|
|
|
|
|
|
Factory.register("EpisodeButton", cls=EpisodeButton)
|
|
|
|
|
|
class AnimeScreenView(BaseScreenView):
|
|
"""The anime screen view"""
|
|
|
|
current_link = StringProperty()
|
|
current_links = ListProperty([])
|
|
current_anime_data = ObjectProperty()
|
|
caller_screen_name = ObjectProperty()
|
|
current_title = ()
|
|
episodes_container = ObjectProperty()
|
|
total_episodes = 0
|
|
current_episode = 1
|
|
video_player = ObjectProperty()
|
|
current_server = "dropbox"
|
|
is_dub = ObjectProperty()
|
|
|
|
def __init__(self, **kwargs):
|
|
super().__init__(**kwargs)
|
|
# self.update_episodes(100)
|
|
|
|
def update_episodes(self, episodes_list):
|
|
self.episodes_container.data = []
|
|
self.total_episodes = len(episodes_list)
|
|
for episode in episodes_list:
|
|
self.episodes_container.data.append(
|
|
{
|
|
"viewclass": "EpisodeButton",
|
|
"text": str(episode),
|
|
"change_episode_callback": lambda x=episode: self.update_current_episode(
|
|
x
|
|
),
|
|
}
|
|
)
|
|
|
|
def next_episode(self):
|
|
next_episode = self.current_episode + 1
|
|
if next_episode <= self.total_episodes:
|
|
self.update_current_episode(str(next_episode))
|
|
|
|
def previous_episode(self):
|
|
previous_episode = self.current_episode - 1
|
|
if previous_episode > 0:
|
|
self.update_current_episode(str(previous_episode))
|
|
|
|
def on_current_anime_data(self, instance, value):
|
|
data = value["show"]
|
|
self.update_episodes(data["availableEpisodesDetail"]["sub"][::-1])
|
|
self.current_episode = int("1")
|
|
self.update_current_video_stream(self.current_server)
|
|
self.video_player.state = "play"
|
|
|
|
def update_current_episode(self, episode):
|
|
self.current_episode = int(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"
|
|
|
|
def update_current_video_stream(self, server, is_dub=False):
|
|
for link in self.current_links:
|
|
if stream_link := link.get(server):
|
|
self.current_server = server
|
|
self.current_link = stream_link[0]
|
|
break
|
|
|
|
def add_to_user_anime_list(self, *args):
|
|
self.app.add_anime_to_user_anime_list(self.model.anime_id)
|