From 4a9bb2afc4f89b69948dff18c9758e0b140b1142 Mon Sep 17 00:00:00 2001 From: zenrac Date: Wed, 3 Jan 2018 01:03:46 +0100 Subject: [PATCH 1/3] Avoid an error with a not available score New animes don't have a defined score, so it returns an error. It allows to return "0" as score. --- myanimelist/media.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/myanimelist/media.py b/myanimelist/media.py index 9428443..8ae3cd3 100644 --- a/myanimelist/media.py +++ b/myanimelist/media.py @@ -253,7 +253,10 @@ def parse_sidebar(self, media_page): ".//div[contains(@class,'js-statistics-info')]//span[text()[contains(.,'Score:')]]") if len(score_tag_results) == 0: raise Exception("Couldn't find score tag.") - score = float(utilities.css_select('span.dark_text + span', score_tag_results[0])[0].text) + try: + score = float(utilities.css_select('span.dark_text + span', score_tag_results[0])[0].text) + except ValueError: + score = None score_tag = utilities.css_select('span.dark_text + span', score_tag_results[0])[0] num_users = int(score_tag.getparent().xpath(".//span[@itemprop='ratingCount']")[0].text.replace(',', '')) stripped_score = score From 0e5adfb18e7b700c1e03eba76bed853edf354a84 Mon Sep 17 00:00:00 2001 From: zenrac Date: Wed, 3 Jan 2018 01:46:25 +0100 Subject: [PATCH 2/3] Update media.py --- myanimelist/media.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/myanimelist/media.py b/myanimelist/media.py index 8ae3cd3..769dff6 100644 --- a/myanimelist/media.py +++ b/myanimelist/media.py @@ -253,10 +253,11 @@ def parse_sidebar(self, media_page): ".//div[contains(@class,'js-statistics-info')]//span[text()[contains(.,'Score:')]]") if len(score_tag_results) == 0: raise Exception("Couldn't find score tag.") - try: - score = float(utilities.css_select('span.dark_text + span', score_tag_results[0])[0].text) - except ValueError: + score_text = utilities.css_select('span.dark_text + span', score_tag_results[0])[0].text + if isinstance(score_text, str): # Happen when score == 'N/A' score = None + else: + score = float(score_text) score_tag = utilities.css_select('span.dark_text + span', score_tag_results[0])[0] num_users = int(score_tag.getparent().xpath(".//span[@itemprop='ratingCount']")[0].text.replace(',', '')) stripped_score = score From 3acc8656432dad6356c3ef258c7235d5dbcef400 Mon Sep 17 00:00:00 2001 From: zenrac Date: Wed, 3 Jan 2018 03:53:32 +0100 Subject: [PATCH 3/3] It wasn't working --- myanimelist/media.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/myanimelist/media.py b/myanimelist/media.py index 769dff6..ce4c987 100644 --- a/myanimelist/media.py +++ b/myanimelist/media.py @@ -254,7 +254,7 @@ def parse_sidebar(self, media_page): if len(score_tag_results) == 0: raise Exception("Couldn't find score tag.") score_text = utilities.css_select('span.dark_text + span', score_tag_results[0])[0].text - if isinstance(score_text, str): # Happen when score == 'N/A' + if score_text == "N/A": score = None else: score = float(score_text)