From 8bbd1223a5b803e4a3dfbac013e1fdaf8bbdc1a9 Mon Sep 17 00:00:00 2001 From: Pablo Date: Fri, 1 Sep 2023 13:08:42 +0200 Subject: [PATCH] fix(Issue): error when series doesn't have any trade paperback --- src/comicgeeks/classes.py | 90 +++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/src/comicgeeks/classes.py b/src/comicgeeks/classes.py index 1ca5b58..f614703 100644 --- a/src/comicgeeks/classes.py +++ b/src/comicgeeks/classes.py @@ -9,6 +9,7 @@ from comicgeeks.extract import extract from comicgeeks.utils import get_characters, get_series, randomword + class Issue: None @@ -231,53 +232,52 @@ def _get_data(self): r = self._session.get(url) r.raise_for_status() r = r.json() - if r["count"] == 0: - raise Exception("No series found") - soup = BeautifulSoup(r["list"], features="lxml") - content = soup.find(id="comic-list-issues") - trade_paperbacks = [] - for issue in content.find_all("li"): - title = issue.find(class_="title").text.strip() - number = re.findall(r"\d+", title) - number = number[-1] if number else 1 - issue_id = int(issue.find("a")["href"].split("/")[2]) - i = Trade_Paperback( - issue_id=issue_id, - session=self._session, - ) + if r["count"] > 0: + soup = BeautifulSoup(r["list"], features="lxml") + content = soup.find(id="comic-list-issues") + + for issue in content.find_all("li"): + title = issue.find(class_="title").text.strip() + number = re.findall(r"\d+", title) + number = number[-1] if number else 1 + issue_id = int(issue.find("a")["href"].split("/")[2]) + i = Trade_Paperback( + issue_id=issue_id, + session=self._session, + ) - i.name = title - i.url = url - i.store_date = issue.find(class_="date")["data-date"] - i.price = ( - float(issue.find(class_="price").text.split("·")[1].strip()[1::]) - if issue.find(class_="price") - else "Unknown" - ) - i.publisher = r["series"]["publisher_name"] - i.cover = issue.find("img")["data-src"] - i.number = str(number) if number else "" - comic_controller = issue.findAll(class_="comic-controller") - i.user = { - "pull": True if "active" in comic_controller[0]["class"] else False, - "collect": True - if len(comic_controller) >= 2 - and "active" in comic_controller[1]["class"] - else False, - "readlist": True - if len(comic_controller) >= 3 - and "active" in comic_controller[2]["class"] - else False, - "wishlist": True - if len(comic_controller) >= 4 - and "active" in comic_controller[3]["class"] - else False, - "rating": int(issue["data-rating"]) - if "data-rating" in issue - else "Unknown", - } - trade_paperbacks.append(i) + i.name = title + i.url = url + i.store_date = issue.find(class_="date")["data-date"] + i.price = ( + float(issue.find(class_="price").text.split("·")[1].strip()[1::]) + if issue.find(class_="price") + else "Unknown" + ) + i.publisher = r["series"]["publisher_name"] + i.cover = issue.find("img")["data-src"] + i.number = str(number) if number else "" + comic_controller = issue.findAll(class_="comic-controller") + i.user = { + "pull": True if "active" in comic_controller[0]["class"] else False, + "collect": True + if len(comic_controller) >= 2 + and "active" in comic_controller[1]["class"] + else False, + "readlist": True + if len(comic_controller) >= 3 + and "active" in comic_controller[2]["class"] + else False, + "wishlist": True + if len(comic_controller) >= 4 + and "active" in comic_controller[3]["class"] + else False, + "rating": int(issue["data-rating"]) + if "data-rating" in issue + else "Unknown", + } + trade_paperbacks.append(i) self._name = r["series"]["title"] self._publisher = r["series"]["publisher_name"]