From f24912fd1cfad3ba8a02b9f83769900c22a6ba47 Mon Sep 17 00:00:00 2001 From: Benedict Xavier Wanyonyi Date: Fri, 31 May 2024 11:20:15 +0300 Subject: [PATCH] feat:Made trailer player better --- app/Controller/home_screen.py | 16 ++--- app/Controller/my_list_screen.py | 21 ++++++- app/Model/my_list_screen.py | 4 +- app/Utility/animdl_config_manager.py | 10 ++-- app/View/AnimeScreen/anime_screen.kv | 1 + app/View/AnimeScreen/anime_screen.py | 4 +- .../components/animdl_stream_dialog.py | 2 +- app/View/AnimeScreen/components/controls.kv | 2 +- app/View/AnimeScreen/components/controls.py | 4 +- .../components/download_anime_dialog.py | 1 + app/View/MylistScreen/my_list_screen.kv | 2 +- .../media_card/components/media_player.py | 13 ++-- .../media_card/components/media_popup.kv | 18 +++--- .../media_card/components/media_popup.py | 19 ++++++ app/View/components/media_card/media_card.py | 6 +- app/anixstream_.spec | 40 +++++++++++++ app/configs/animdl_config_panel.json | 2 +- app/k.spec | 56 ++++++++++++++++++ app/main.py | 5 +- app/main.spec | 56 ++++++++++++++++++ app/mpv-shot0001.jpg | Bin 0 -> 207074 bytes app/mpv-shot0002.jpg | Bin 0 -> 245907 bytes 22 files changed, 241 insertions(+), 41 deletions(-) create mode 100644 app/anixstream_.spec create mode 100644 app/k.spec create mode 100644 app/main.spec create mode 100644 app/mpv-shot0001.jpg create mode 100644 app/mpv-shot0002.jpg diff --git a/app/Controller/home_screen.py b/app/Controller/home_screen.py index 5144e2e..1e3ae43 100644 --- a/app/Controller/home_screen.py +++ b/app/Controller/home_screen.py @@ -23,8 +23,8 @@ class HomeScreenController: def __init__(self, model:HomeScreenModel): self.model = model # Model.main_screen.MainScreenModel self.view = HomeScreenView(controller=self, model=self.model) - if self.view.app.config.get("Preferences","is_startup_anime_enable")=="1": # type: ignore - Clock.schedule_once(lambda _:self.populate_home_screen()) + # if self.view.app.config.get("Preferences","is_startup_anime_enable")=="1": # type: ignore + # Clock.schedule_once(lambda _:self.populate_home_screen()) def get_view(self) -> HomeScreenView: return self.view @@ -109,12 +109,12 @@ class HomeScreenController: def populate_home_screen(self): self.populate_errors = [] - Clock.schedule_once(lambda _:self.trending_anime()) - Clock.schedule_once(lambda _:self.highest_scored_anime()) - Clock.schedule_once(lambda _:self.popular_anime()) - Clock.schedule_once(lambda _: self.favourite_anime()) - Clock.schedule_once(lambda _:self.recently_updated_anime()) - Clock.schedule_once(lambda _:self.upcoming_anime()) + Clock.schedule_once(lambda _:self.trending_anime(),1) + Clock.schedule_once(lambda _:self.highest_scored_anime(),2) + Clock.schedule_once(lambda _:self.popular_anime(),3) + Clock.schedule_once(lambda _: self.favourite_anime(),4) + Clock.schedule_once(lambda _:self.recently_updated_anime(),5) + Clock.schedule_once(lambda _:self.upcoming_anime(),6) if self.populate_errors: show_notification(f"Failed to fetch all home screen data",f"Theres probably a problem with your internet connection or anilist servers are down.\nFailed include:{', '.join(self.populate_errors)}") diff --git a/app/Controller/my_list_screen.py b/app/Controller/my_list_screen.py index a4c87c3..c3b66fe 100644 --- a/app/Controller/my_list_screen.py +++ b/app/Controller/my_list_screen.py @@ -19,18 +19,33 @@ class MyListScreenController: def __init__(self, model:MyListScreenModel): self.model = model self.view = MyListScreenView(controller=self, model=self.model) - self.requested_update_my_list_screen() + if len(self.requested_update_my_list_screen())>30: + self.requested_update_my_list_screen(2) def get_view(self) -> MyListScreenView: return self.view - def requested_update_my_list_screen(self): + def requested_update_my_list_screen(self,page=None): user_anime_list = user_data_helper.get_user_anime_list() if animes_to_add:=difference(user_anime_list,self.model.already_in_user_anime_list): Logger.info("My List Screen:User anime list change;updating screen") - anime_cards = self.model.update_my_anime_list_view(animes_to_add) + # if thirty:=len(animes_to_add)>30: + # self.model.already_in_user_anime_list = user_anime_list[:30] + # else: + + anime_cards = self.model.update_my_anime_list_view(animes_to_add,page) self.model.already_in_user_anime_list = user_anime_list + if isgenerator(anime_cards): for result_card in anime_cards: result_card.screen = self.view self.view.update_layout(result_card) + return animes_to_add + elif page: + anime_cards = self.model.update_my_anime_list_view(self.model.already_in_user_anime_list,page) + # self.model.already_in_user_anime_list = user_anime_list + if isgenerator(anime_cards): + for result_card in anime_cards: + result_card.screen = self.view + self.view.update_layout(result_card) + return [] diff --git a/app/Model/my_list_screen.py b/app/Model/my_list_screen.py index 4ca9ff4..b4fb518 100644 --- a/app/Model/my_list_screen.py +++ b/app/Model/my_list_screen.py @@ -5,8 +5,8 @@ from Utility import MediaCardLoader,show_notification class MyListScreenModel(BaseScreenModel): already_in_user_anime_list = [] - def update_my_anime_list_view(self,not_yet_in_user_anime_list:list,**kwargs): - success,self.data = AniList.search(id_in=not_yet_in_user_anime_list) + def update_my_anime_list_view(self,not_yet_in_user_anime_list:list,page=None): + success,self.data = AniList.search(id_in=not_yet_in_user_anime_list,page=page,sort="SCORE_DESC") if success: return self.media_card_generator() else: diff --git a/app/Utility/animdl_config_manager.py b/app/Utility/animdl_config_manager.py index f861d09..9203ed1 100644 --- a/app/Utility/animdl_config_manager.py +++ b/app/Utility/animdl_config_manager.py @@ -15,18 +15,18 @@ if local_data_path:=os.getenv("LOCALAPPDATA"): config_dir = os.path.join(local_data_path,".config") if not os.path.exists(config_dir): os.mkdir(config_dir) - animdl_config_folder_location = os.path.join(config_dir, ".animdl") + animdl_config_folder_location = os.path.join(config_dir, "animdl") else: user_profile_path = plyer.storagepath.get_home_dir() # type: ignore animdl_config_folder_location = os.path.join(user_profile_path, ".animdl") - -if not os.path.exists(animdl_config_folder_location): - os.mkdir(animdl_config_folder_location) + if not os.path.exists(animdl_config_folder_location): + os.mkdir(animdl_config_folder_location) animdl_config_location = os.path.join(animdl_config_folder_location, "config.yml") +# print(animdl_config_location) animdl_config = YamlParser( animdl_config_location, - {"default_player": "mpv", "default_provider": "AllAnime", "quality_string": "best"}, + {"default_player": "mpv", "default_provider": "allanime", "quality_string": "best"}, AnimdlConfig, ) diff --git a/app/View/AnimeScreen/anime_screen.kv b/app/View/AnimeScreen/anime_screen.kv index 372469c..416e3ea 100644 --- a/app/View/AnimeScreen/anime_screen.kv +++ b/app/View/AnimeScreen/anime_screen.kv @@ -47,6 +47,7 @@ id:rankings_bar Controls: screen:root + cols:3 if root.width < 1100 else 5 MDBoxLayout: adaptive_height:True padding:"20dp" diff --git a/app/View/AnimeScreen/anime_screen.py b/app/View/AnimeScreen/anime_screen.py index 7cc0402..1df2d8f 100644 --- a/app/View/AnimeScreen/anime_screen.py +++ b/app/View/AnimeScreen/anime_screen.py @@ -42,8 +42,8 @@ class AnimeScreenView(BaseScreenView): # update header self.header.titles = f"{english_title}\n{jp_title}" - # if banner_image := data["bannerImage"]: - self.header.banner_image = data["bannerImage"] + if banner_image := data["bannerImage"]: + self.header.banner_image = banner_image # -----side bar----- diff --git a/app/View/AnimeScreen/components/animdl_stream_dialog.py b/app/View/AnimeScreen/components/animdl_stream_dialog.py index 1c90b20..28a68c7 100644 --- a/app/View/AnimeScreen/components/animdl_stream_dialog.py +++ b/app/View/AnimeScreen/components/animdl_stream_dialog.py @@ -64,6 +64,6 @@ class AnimdlStreamDialog( cmds = [*cmds, "-q", quality] app.watch_on_animdl(custom_options=cmds) - + self.dismiss() def stream_anime(self, app): Clock.schedule_once(lambda _: self._stream_anime(app)) diff --git a/app/View/AnimeScreen/components/controls.kv b/app/View/AnimeScreen/components/controls.kv index 4a10c8d..3698d4a 100644 --- a/app/View/AnimeScreen/components/controls.kv +++ b/app/View/AnimeScreen/components/controls.kv @@ -3,7 +3,7 @@ padding:"10dp" spacing:"10dp" pos_hint: {'center_x': 0.5} - # StackLayout: + cols:3 MDButton: on_press: root.screen.add_to_user_anime_list() diff --git a/app/View/AnimeScreen/components/controls.py b/app/View/AnimeScreen/components/controls.py index 2a8faa2..80f4292 100644 --- a/app/View/AnimeScreen/components/controls.py +++ b/app/View/AnimeScreen/components/controls.py @@ -1,9 +1,9 @@ from kivy.properties import ObjectProperty -from kivymd.uix.boxlayout import MDBoxLayout +from kivymd.uix.gridlayout import MDGridLayout -class Controls(MDBoxLayout): +class Controls(MDGridLayout): """The diferent controls available""" screen = ObjectProperty() diff --git a/app/View/AnimeScreen/components/download_anime_dialog.py b/app/View/AnimeScreen/components/download_anime_dialog.py index 49ca90b..82551b7 100644 --- a/app/View/AnimeScreen/components/download_anime_dialog.py +++ b/app/View/AnimeScreen/components/download_anime_dialog.py @@ -39,3 +39,4 @@ class DownloadAnimeDialog( default_cmds["quality"] = quality app.download_anime(self.anime_id, default_cmds) + self.dismiss() diff --git a/app/View/MylistScreen/my_list_screen.kv b/app/View/MylistScreen/my_list_screen.kv index 59a4d9c..1c2e659 100644 --- a/app/View/MylistScreen/my_list_screen.kv +++ b/app/View/MylistScreen/my_list_screen.kv @@ -21,7 +21,7 @@ spacing: '40dp' padding: "100dp","50dp","10dp","200dp" id:user_anime_list_container - cols:5 + cols:4 if root.width<=1100 else 5 size_hint_y:None height:self.minimum_height diff --git a/app/View/components/media_card/components/media_player.py b/app/View/components/media_card/components/media_player.py index ec9d9c9..4e19821 100644 --- a/app/View/components/media_card/components/media_player.py +++ b/app/View/components/media_card/components/media_player.py @@ -1,5 +1,10 @@ -from kivy.uix.video import Video - -class MediaPopupVideoPlayer(Video): - pass +from kivy.uix.videoplayer import VideoPlayer +# TODO: make fullscreen exp better +class MediaPopupVideoPlayer(VideoPlayer): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def on_fullscreen(self, instance, value): + super().on_fullscreen(instance, value) + # self.state = "pause" \ No newline at end of file diff --git a/app/View/components/media_card/components/media_popup.kv b/app/View/components/media_card/components/media_popup.kv index 1834baf..c06193c 100644 --- a/app/View/components/media_card/components/media_popup.kv +++ b/app/View/components/media_card/components/media_popup.kv @@ -8,11 +8,13 @@ adaptive_height:True - +