mirror of
https://github.com/Benexl/FastAnime.git
synced 2026-01-02 16:00:01 -08:00
fix(my list):make my list screen work with new media cards
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from inspect import isgenerator
|
||||
|
||||
from math import ceil
|
||||
from kivy.logger import Logger
|
||||
|
||||
# from kivy.clock import Clock
|
||||
@@ -22,38 +22,25 @@ class MyListScreenController:
|
||||
self.model = model
|
||||
self.view = MyListScreenView(controller=self, model=self.model)
|
||||
# if len(self.requested_update_my_list_screen()) > 30:
|
||||
# self.requested_update_my_list_screen(2)
|
||||
self.requested_update_my_list_screen()
|
||||
|
||||
def get_view(self) -> MyListScreenView:
|
||||
return self.view
|
||||
|
||||
def requested_update_my_list_screen(self, page=None):
|
||||
user_anime_list = user_data_helper.get_user_anime_list()
|
||||
def requested_update_my_list_screen(self):
|
||||
_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
|
||||
_user_anime_list, self.model.already_in_user_anime_list
|
||||
):
|
||||
Logger.info("My List Screen:User anime list change;updating screen")
|
||||
# if thirty:=len(animes_to_add)>30:
|
||||
# self.model.already_in_user_anime_list = user_anime_list[:30]
|
||||
# else:
|
||||
no_of_updates = ceil(len(animes_to_add) / 30)
|
||||
Logger.info("MyList Screen:Change detected updating screen")
|
||||
for i in range(no_of_updates):
|
||||
_animes_to_add = animes_to_add[i * 30 : (i + 1) * 30]
|
||||
anime_cards = self.model.update_my_anime_list_view(_animes_to_add)
|
||||
|
||||
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)
|
||||
if isgenerator(anime_cards):
|
||||
for result_card in anime_cards:
|
||||
result_card["screen"] = self.view
|
||||
self.view.update_layout(result_card)
|
||||
self.model.already_in_user_anime_list = _user_anime_list
|
||||
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 []
|
||||
else:
|
||||
return []
|
||||
|
||||
@@ -4,7 +4,7 @@ from kivy.cache import Cache
|
||||
from ..libs.anilist import AniList
|
||||
from ..libs.anime_provider.allanime.api import anime_provider
|
||||
from .base_model import BaseScreenModel
|
||||
from ..Utility.data import anime_maps
|
||||
from ..Utility.data import anime_normalizer
|
||||
|
||||
|
||||
def anime_title_percentage_match(
|
||||
@@ -19,7 +19,9 @@ def anime_title_percentage_match(
|
||||
Returns:
|
||||
int: the percentage match
|
||||
"""
|
||||
if normalized_anime_title := anime_maps.get(possible_user_requested_anime_title):
|
||||
if normalized_anime_title := anime_normalizer.get(
|
||||
possible_user_requested_anime_title
|
||||
):
|
||||
possible_user_requested_anime_title = normalized_anime_title
|
||||
print(locals())
|
||||
# compares both the romaji and english names and gets highest Score
|
||||
|
||||
@@ -7,9 +7,9 @@ from .base_model import BaseScreenModel
|
||||
class MyListScreenModel(BaseScreenModel):
|
||||
already_in_user_anime_list = []
|
||||
|
||||
def update_my_anime_list_view(self, not_yet_in_user_anime_list: list, page=None):
|
||||
def update_my_anime_list_view(self, not_yet_in_user_anime_list: list):
|
||||
success, self.data = AniList.search(
|
||||
id_in=not_yet_in_user_anime_list, page=page, sort="SCORE_DESC"
|
||||
id_in=not_yet_in_user_anime_list, sort="SCORE_DESC"
|
||||
)
|
||||
if success:
|
||||
return self.media_card_generator()
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
Just contains some useful data used across the codebase
|
||||
"""
|
||||
|
||||
anime_maps = {"1P": "one piece"}
|
||||
anime_normalizer = {
|
||||
"1P": "one piece",
|
||||
"Magia Record: Mahou Shoujo Madoka☆Magica Gaiden (TV)": "Mahou Shoujo Madoka☆Magica",
|
||||
}
|
||||
|
||||
|
||||
themes_available = [
|
||||
|
||||
@@ -87,6 +87,8 @@ class MediaCardDataLoader(object):
|
||||
|
||||
if anime_id in user_data_helper.get_user_anime_list():
|
||||
media_card_data["is_in_my_list"] = True
|
||||
else:
|
||||
media_card_data["is_in_my_list"] = False
|
||||
|
||||
if anime_item["averageScore"]:
|
||||
stars = int(anime_item["averageScore"] / 100 * 6)
|
||||
|
||||
@@ -14,15 +14,19 @@
|
||||
orientation: 'vertical'
|
||||
size_hint:.95,1
|
||||
SearchBar:
|
||||
MDScrollView:
|
||||
MDRecycleView:
|
||||
pos_hint:{"center_x":.5}
|
||||
size_hint:1,1
|
||||
MDGridLayout:
|
||||
id:user_anime_list_container
|
||||
key_viewclass:"viewclass"
|
||||
MDRecycleGridLayout:
|
||||
pos_hint: {'center_x': 0.5}
|
||||
spacing: '40dp'
|
||||
padding: "100dp","50dp","10dp","200dp"
|
||||
id:user_anime_list_container
|
||||
cols:4 if root.width<=1100 else 5
|
||||
padding: "25dp","50dp","75dp","200dp"
|
||||
default_size_hint:None,None
|
||||
default_size:dp(100),dp(150)
|
||||
cols:3 if root.width <= 1100 else 5
|
||||
size_hint_y:None
|
||||
height:self.minimum_height
|
||||
height:max(self.parent.parent.height,self.minimum_height)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from kivy.clock import Clock
|
||||
from kivy.properties import DictProperty, ObjectProperty, StringProperty
|
||||
from kivy.properties import ObjectProperty
|
||||
|
||||
from ...View.base_screen import BaseScreenView
|
||||
|
||||
@@ -18,4 +18,4 @@ class MyListScreenView(BaseScreenView):
|
||||
Clock.schedule_once(lambda _: self.controller.requested_update_my_list_screen())
|
||||
|
||||
def update_layout(self, widget):
|
||||
self.user_anime_list_container.add_widget(widget)
|
||||
self.user_anime_list_container.data.append(widget)
|
||||
|
||||
Reference in New Issue
Block a user