From 494fe4c850dcdf620697e5838c141d13312fb182 Mon Sep 17 00:00:00 2001 From: franchioping Date: Wed, 24 Jul 2024 02:20:06 +0100 Subject: [PATCH] update .gitignore fix chapters counting the most recently uploaded as the latest renaming in manga_api.py, expecially in chapters first working saving for manager.py (with no loading as of now) --- .gitignore | 4 ++++ embed_util.py | 4 ++-- manager.py | 6 +++--- manga_api.py | 51 ++++++++++++++++++++++++++++++++++++++++----------- 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 5d381cc..3815871 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,7 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ + + +# Save file +manager.json diff --git a/embed_util.py b/embed_util.py index 338ce08..9162223 100644 --- a/embed_util.py +++ b/embed_util.py @@ -79,9 +79,9 @@ def get_chapter_files(manga: Manga): def chapter_embed(manga: Manga, chapter: Chapter): e = discord.Embed( title=f'New "{manga.get_title()}" Chapter Released!', - description=f"Chapter {chapter.get_chapter_num()} of {manga.get_title()} Released." + description=f"Chapter {chapter.get_number()} of {manga.get_title()} Released." f"\nGo read it now!", - url=chapter.get_chapter_url() + url=chapter.get_url() ) e.set_thumbnail(url=f"attachment://{manga.id}.{manga.get_cover_art_extension()}") return e diff --git a/manager.py b/manager.py index 0c026d2..1411c4d 100644 --- a/manager.py +++ b/manager.py @@ -39,10 +39,10 @@ class Manager: def check_for_new_chapter(self, manga: manga_api.Manga) -> manga_api.Chapter | None: latest_chap = manga.get_latest_chap() if latest_chap not in self.chapters.keys(): - self.chapters[manga.id] = latest_chap + self.chapters[manga.id] = latest_chap.id return latest_chap - if float(latest_chap.get_chapter_num()) > self.chapters[manga.id]: - self.chapters[manga.id] = latest_chap + if latest_chap.is_more_recent_than(manga_api.Chapter(self.chapters[manga.id])): + self.chapters[manga.id] = latest_chap.id return latest_chap else: return None diff --git a/manga_api.py b/manga_api.py index 4b95c4c..cc97d31 100644 --- a/manga_api.py +++ b/manga_api.py @@ -21,15 +21,25 @@ class Chapter: ) self.data = r.json()["data"] - def get_chapter_num(self) -> str: + def is_more_recent_than(self, chapter): + if chapter.get_volume() != self.get_volume(): + return float(self.get_volume()) > float(chapter.get_volume()) + return float(self.get_number()) > float(chapter.get_number()) + + def get_volume(self) -> str: + return self.data["attributes"]["volume"] + + def get_number(self) -> str: return self.data["attributes"]["chapter"] - def get_chapter_url(self) -> str: - return self.data["attributes"]["readableAt"] + def get_url(self) -> str: + return f"https://mangadex.org/chapter/{self.id}" def __str__(self): return str({ - "chapter_num": self.get_chapter_num(), + "chapter_vol": self.get_volume(), + "chapter_num": self.get_number(), + "chapter_url": self.get_url() }) @@ -57,7 +67,31 @@ class Manga: return "No Title" def get_latest_chap(self) -> Chapter: - return Chapter(self.data["attributes"]["latestUploadedChapter"]) + params = { + "manga": self.id, + "translatedLanguage": ["en"], + "order": { + "chapter": "desc" + } + } + r = requests.get( + f"{self.base_url}/chapter?manga={self.id}&originalLanguage%5B%5D=en&contentRating%5B%5D=safe" + f"&contentRating%5B%5D=suggestive&contentRating%5B%5D=erotica&includeFutureUpdates=1&order%5Bchapter%5D" + f"=desc", + + ) + print(r.request.__dict__) + print(r.json()) + if r.json()["total"] == 0: + r = requests.get( + f"{self.base_url}/chapter?manga={self.id}&translatedLanguage%5B%5D=en&contentRating%5B%5D=safe" + f"&contentRating%5B%5D=suggestive&contentRating%5B%5D=erotica&includeFutureUpdates=1&order%5Bchapter" + f"%5D=desc", + ) + + latest_chap = r.json()["data"][0] + + return Chapter(latest_chap["id"]) def get_cover_art_url(self): cover_art_id = "" @@ -65,8 +99,6 @@ class Manga: if relation["type"] == "cover_art": cover_art_id = relation["id"] - - r = requests.get(f"{self.base_url}/cover/{cover_art_id}") cover_fileName = r.json()["data"]["attributes"]["fileName"] cover_extension = cover_fileName.split(".")[1] @@ -78,8 +110,6 @@ class Manga: if relation["type"] == "cover_art": cover_art_id = relation["id"] - - r = requests.get(f"{self.base_url}/cover/{cover_art_id}") cover_fileName = r.json()["data"]["attributes"]["fileName"] cover_extension = cover_fileName.split(".")[1] @@ -121,7 +151,6 @@ class MangaHandler: return manga_list - if __name__ == "__main__": mh = MangaHandler() - print(mh.search("Umineko no Naku Koro ni Episode 4: Alliance of the Golden Witch")[0].data) + print(mh.search("Umineko no Naku Koro ni Episode 4: Alliance of the Golden Witch")[0].get_latest_chap())