fix(my list):make my list screen work with new media cards

This commit is contained in:
Benex254
2024-06-12 17:27:26 +03:00
parent ef0083fa5a
commit e09b3f1fc8
7 changed files with 40 additions and 42 deletions

View File

@@ -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 []

View File

@@ -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

View File

@@ -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()

View File

@@ -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 = [

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)