From aa4da416efcbc62c51f870e549036ac2c1d32348 Mon Sep 17 00:00:00 2001 From: Arima57 Date: Wed, 20 Dec 2023 23:08:20 +0600 Subject: [PATCH] Lightnovel collision fix 0.01 --- AnilistPython/__init__.py | 8 ++--- AnilistPython/anime.py | 55 +++------------------------------- AnilistPython/character.py | 20 ++----------- AnilistPython/manga.py | 60 ++++++++++++-------------------------- 4 files changed, 28 insertions(+), 115 deletions(-) diff --git a/AnilistPython/__init__.py b/AnilistPython/__init__.py index 73e8746..682cca0 100644 --- a/AnilistPython/__init__.py +++ b/AnilistPython/__init__.py @@ -187,7 +187,7 @@ def print_character_info(self, character_name, manual_select=False): self.character.displayCharacterInfo(character_name, manual_select) # Manga ===================================================================================================================== - def get_manga_id(self, manga_name, manual_select=False) -> int: + def get_manga_id(self, manga_name, manual_select=False, eliminateLNconflict=True) -> int: ''' Displays all character data. Auto formats the displayed version of the data. @@ -197,9 +197,9 @@ def get_manga_id(self, manga_name, manual_select=False) -> int: :return: the id of the manga :rtype: int ''' - return self.manga.getMangaID(manga_name, manual_select) + return self.manga.getMangaID(manga_name, manual_select, eliminateLNconflict) - def get_manga(self, manga_name, manual_select=False) -> dict: + def get_manga(self, manga_name, manual_select=False, eliminateLNconflict=True) -> dict: ''' Retrieve manga info in the form of a dictionary. @@ -209,7 +209,7 @@ def get_manga(self, manga_name, manual_select=False) -> dict: :rtype: dict ''' - return self.manga.getManga(manga_name, manual_select) + return self.manga.getManga(manga_name, manual_select, eliminateLNconflict) def get_manga_with_id(self, manga_id) -> dict: ''' diff --git a/AnilistPython/anime.py b/AnilistPython/anime.py index b3c659c..144b7a7 100644 --- a/AnilistPython/anime.py +++ b/AnilistPython/anime.py @@ -23,54 +23,7 @@ def getAnime(self, anime_name, manual_select=False) -> dict: if anime_id == -1: return None - data = self.extractInfo.anime(anime_id) - media_lvl = data['data']['Media'] - - name_romaji = media_lvl['title']['romaji'] - name_english = media_lvl['title']['english'] - - start_year = media_lvl['startDate']['year'] - start_month = media_lvl['startDate']['month'] - start_day = media_lvl['startDate']['day'] - - end_year = media_lvl['endDate']['year'] - end_month = media_lvl['endDate']['month'] - end_day = media_lvl['endDate']['day'] - - starting_time = f'{start_month}/{start_day}/{start_year}' - ending_time = f'{end_month}/{end_day}/{end_year}' - - cover_image = media_lvl['coverImage']['large'] - banner_image = media_lvl['bannerImage'] - - airing_format = media_lvl['format'] - airing_status = media_lvl['status'] - airing_episodes = media_lvl['episodes'] - season = media_lvl['season'] - - desc = media_lvl['description'] - - average_score = media_lvl['averageScore'] - genres = media_lvl['genres'] - - next_airing_ep = media_lvl['nextAiringEpisode'] - - anime_dict = {"name_romaji": name_romaji, - "name_english": name_english, - "starting_time": starting_time, - "ending_time": ending_time, - "cover_image": cover_image, - "banner_image": banner_image, - "airing_format": airing_format, - "airing_status": airing_status, - "airing_episodes": airing_episodes, - "season": season, - "desc": desc, - "average_score": average_score, - "genres": genres, - "next_airing_ep": next_airing_ep,} - - return anime_dict + return self.getAnimeWithID(anime_id) def getAnimeWithID(self, anime_id) -> dict: @@ -143,7 +96,7 @@ def getAnimeID(self, anime_name, manual_select=False): ''' # if manual select is turned off ============================================================================ - if manual_select == False: + if not manual_select: anime_list = [] data = self.extractID.anime(anime_name) for i in range(len(data['data']['Page']['media'])): @@ -159,7 +112,7 @@ def getAnimeID(self, anime_name, manual_select=False): return anime_ID # if manual select is turned on ============================================================================= - elif manual_select == True: + elif manual_select: data = self.extractID.anime(anime_name) max_result = 0 counter = 0 # number of displayed results from search @@ -213,4 +166,4 @@ def displayAnimeInfo(self, anime_name, manual_select=False): print("============================ ANIME INFO ============================") for key, value in ani_dict.items(): print(f"{arr[counter]}: {value}") - counter += 1 \ No newline at end of file + counter += 1 diff --git a/AnilistPython/character.py b/AnilistPython/character.py index 9e5ea64..efd278d 100644 --- a/AnilistPython/character.py +++ b/AnilistPython/character.py @@ -23,23 +23,7 @@ def getCharacter(self, character_name, manual_select=False) -> dict: if character_id == -1: return None - data = self.extractInfo.character(character_id) - character_lvl = data['data']['Character'] - - first_name = character_lvl['name']['first'] - last_name = character_lvl['name']['last'] - native_name = character_lvl['name']['native'] - - desc = character_lvl['description'] - image = character_lvl['image']['large'] - - character_dict = {"first_name": first_name, - "last_name": last_name, - "native_name": native_name, - "desc": desc, - "image": image,} - - return character_dict + return self.getCharacterWithID(character_id) def getCharacterWithID(self, character_id) -> dict: @@ -156,4 +140,4 @@ def displayCharacterInfo(self, character_name, manual_select=False): print("============================ CHARACTER INFO ============================") for key, value in char_dict.items(): print(f"{arr[counter]}: {value}") - counter += 1 \ No newline at end of file + counter += 1 diff --git a/AnilistPython/manga.py b/AnilistPython/manga.py index 885aa23..7e71746 100644 --- a/AnilistPython/manga.py +++ b/AnilistPython/manga.py @@ -9,7 +9,7 @@ def __init__(self, access_info, activated=True): self.extractID = ExtractID(access_info, activated) - def getManga(self, manga_name, manual_select=False): + def getManga(self, manga_name, manual_select=False, eliminateLNconflict=True): ''' Retrieve character info in the form of a json object. Retrieve json object will be reformatted in a easily accessable json obj. @@ -20,45 +20,11 @@ def getManga(self, manga_name, manual_select=False): ''' manga_dict = {} - manga_id = self.getMangaID(manga_name, manual_select) + manga_id = self.getMangaID(manga_name, manual_select, eliminateLNconflict) if manga_id == -1: return None - data = self.extractInfo.manga(manga_id) - media_lvl = data['data']['Media'] - - manga_dict['name_romaji'] = media_lvl['title']['romaji'] - manga_dict['name_english'] = media_lvl['title']['english'] - - start_year = media_lvl['startDate']['year'] - start_month = media_lvl['startDate']['month'] - start_day = media_lvl['startDate']['day'] - - end_year = media_lvl['endDate']['year'] - end_month = media_lvl['endDate']['month'] - end_day = media_lvl['endDate']['day'] - - manga_dict['starting_time'] = f'{start_month}/{start_day}/{start_year}' - manga_dict['ending_time'] = f'{end_month}/{end_day}/{end_year}' - - manga_dict['cover_image'] = media_lvl['coverImage']['large'] - manga_dict['banner_image'] = media_lvl['bannerImage'] - - manga_dict['release_format'] = media_lvl['format'] - manga_dict['release_status'] = media_lvl['status'] - - manga_dict['chapters'] = media_lvl['chapters'] - manga_dict['volumes'] = media_lvl['volumes'] - - manga_dict['desc'] = media_lvl['description'] - - manga_dict['average_score'] = media_lvl['averageScore'] - manga_dict['mean_score'] = media_lvl['meanScore'] - - manga_dict['genres'] = media_lvl['genres'] - manga_dict['synonyms'] = media_lvl['synonyms'] - - return manga_dict + return self.getMangaWithID(manga_id) def getMangaWithID(self, manga_id) -> dict: @@ -109,7 +75,7 @@ def getMangaWithID(self, manga_id) -> dict: return manga_dict - def getMangaID(self, manga_name, manual_select=False): + def getMangaID(self, manga_name, manual_select=False, eliminateLNconflict=True): ''' Retrieves the character ID on Anilist. @@ -118,7 +84,7 @@ def getMangaID(self, manga_name, manual_select=False): :rtype: int ''' - if manual_select == False: + if not manual_select: manga_list = [] data = self.extractID.manga(manga_name) for i in range(len(data['data']['Page']['media'])): @@ -136,13 +102,17 @@ def getMangaID(self, manga_name, manual_select=False): return manga_ID - elif manual_select == True: + elif manual_select: max_result = 0 counter = 0 # number of displayed results from search data = self.extractID.manga(manga_name) for i in range(len(data['data']['Page']['media'])): curr_manga = data['data']['Page']['media'][i]['title']['romaji'] - print(f"{counter + 1}. {curr_manga}") + if eliminateLNconflict: # Left on by default but just in case if someone is short on time or something + print(f"{counter + 1}. {curr_manga}" + (" (Light Novel)" if self.is_light_novel(data['data']['Page']['media'][i]['id']) else "")) + elif not eliminateLNconflict: + print(f"{counter + 1}. {curr_manga}") + max_result = i + 1 counter += 1 @@ -191,4 +161,10 @@ def displayMangaInfo(self, manga_name, manual_select=False): print("============================== MANGA INFO ==============================") for key, value in manga_dict.items(): print(f"{arr[counter]}: {value}") - counter += 1 \ No newline at end of file + counter += 1 + + def is_light_novel(self, id) -> bool: + data = self.extractInfo.manga(id) + media_lvl = data['data']['Media'] + if media_lvl['format'] == 'NOVEL': + return True