From 5a19eaf9a00e72d11446b7d771fd29dc22037c23 Mon Sep 17 00:00:00 2001 From: Timmy Welch Date: Mon, 25 Jul 2022 11:22:44 -0700 Subject: [PATCH] Fix serializing of sets --- comicapi/comet.py | 14 ++----- comicapi/comicbookinfo.py | 2 +- comicapi/utils.py | 14 +++++++ comictaggerlib/comicvinetalker.py | 12 +----- tests/metadata_test.py | 65 +++++++++++++++++++++++++++++++ 5 files changed, 85 insertions(+), 22 deletions(-) create mode 100644 tests/metadata_test.py diff --git a/comicapi/comet.py b/comicapi/comet.py index e324571..adc0d67 100644 --- a/comicapi/comet.py +++ b/comicapi/comet.py @@ -144,27 +144,21 @@ class CoMet: md.series = utils.xlate(get("series")) md.title = utils.xlate(get("title")) md.issue = utils.xlate(get("issue")) - md.volume = utils.xlate(get("volume")) + md.volume = utils.xlate(get("volume"), True) md.comments = utils.xlate(get("description")) md.publisher = utils.xlate(get("publisher")) md.language = utils.xlate(get("language")) md.format = utils.xlate(get("format")) - md.page_count = utils.xlate(get("pages")) + md.page_count = utils.xlate(get("pages"), True) md.maturity_rating = utils.xlate(get("rating")) - md.price = utils.xlate(get("price")) + md.price = utils.xlate(get("price"), is_float=True) md.is_version_of = utils.xlate(get("isVersionOf")) md.rights = utils.xlate(get("rights")) md.identifier = utils.xlate(get("identifier")) md.last_mark = utils.xlate(get("lastMark")) md.genre = utils.xlate(get("genre")) # TODO - repeatable field - date = utils.xlate(get("date")) - if date is not None: - parts = date.split("-") - if len(parts) > 0: - md.year = parts[0] - if len(parts) > 1: - md.month = parts[1] + _, md.month, md.year = utils.parse_date_str(utils.xlate(get("date"))) md.cover_image = utils.xlate(get("coverImage")) diff --git a/comicapi/comicbookinfo.py b/comicapi/comicbookinfo.py index 88223d6..a99bd45 100644 --- a/comicapi/comicbookinfo.py +++ b/comicapi/comicbookinfo.py @@ -157,7 +157,7 @@ class ComicBookInfo: assign("country", utils.xlate(metadata.country)) assign("rating", utils.xlate(metadata.critical_rating, True)) assign("credits", metadata.credits) - assign("tags", metadata.tags) + assign("tags", list(metadata.tags)) return cbi_container diff --git a/comicapi/utils.py b/comicapi/utils.py index fe674ee..ab0d50b 100644 --- a/comicapi/utils.py +++ b/comicapi/utils.py @@ -35,6 +35,20 @@ class UtilsVars: already_fixed_encoding = False +def parse_date_str(date_str: str) -> tuple[int | None, int | None, int | None]: + day = None + month = None + year = None + if date_str: + parts = date_str.split("-") + year = xlate(parts[0], True) + if len(parts) > 1: + month = xlate(parts[1], True) + if len(parts) > 2: + day = xlate(parts[2], True) + return day, month, year + + def get_recursive_filelist(pathlist: list[str]) -> list[str]: """Get a recursive list of of all files under all path items in the list""" diff --git a/comictaggerlib/comicvinetalker.py b/comictaggerlib/comicvinetalker.py index 5066039..0991b5d 100644 --- a/comictaggerlib/comicvinetalker.py +++ b/comictaggerlib/comicvinetalker.py @@ -121,17 +121,7 @@ class ComicVineTalker: self.log_func(text) def parse_date_str(self, date_str: str) -> tuple[int | None, int | None, int | None]: - day = None - month = None - year = None - if date_str: - parts = date_str.split("-") - year = utils.xlate(parts[0], True) - if len(parts) > 1: - month = utils.xlate(parts[1], True) - if len(parts) > 2: - day = utils.xlate(parts[2], True) - return day, month, year + return utils.parse_date_str(date_str) def test_key(self, key: str, url: str) -> bool: if not url: diff --git a/tests/metadata_test.py b/tests/metadata_test.py new file mode 100644 index 0000000..47938f2 --- /dev/null +++ b/tests/metadata_test.py @@ -0,0 +1,65 @@ +from __future__ import annotations + +import comicapi.comicbookinfo +import comicapi.comicinfoxml +import comicapi.genericmetadata + + +def test_cix(): + CIX = comicapi.comicinfoxml.ComicInfoXml() + string = CIX.string_from_metadata(comicapi.genericmetadata.md_test) + md = CIX.metadata_from_string(string) + assert md == comicapi.genericmetadata.md_test + + +def test_cbi(): + CBI = comicapi.comicbookinfo.ComicBookInfo() + string = CBI.string_from_metadata(comicapi.genericmetadata.md_test) + md = CBI.metadata_from_string(string) + md_test = comicapi.genericmetadata.md_test.replace( + day=None, + language="English", + page_count=None, + maturity_rating=None, + story_arc=None, + series_group=None, + scan_info=None, + characters=None, + teams=None, + locations=None, + pages=[], + alternate_series=None, + alternate_number=None, + alternate_count=None, + imprint=None, + notes=None, + web_link=None, + format=None, + manga=None, + ) + assert md == md_test + + +def test_comet(): + CBI = comicapi.comet.CoMet() + string = CBI.string_from_metadata(comicapi.genericmetadata.md_test) + md = CBI.metadata_from_string(string) + md_test = comicapi.genericmetadata.md_test.replace( + day=None, + story_arc=None, + series_group=None, + scan_info=None, + teams=None, + locations=None, + pages=[], + alternate_series=None, + alternate_number=None, + alternate_count=None, + imprint=None, + notes=None, + web_link=None, + manga=None, + critical_rating=None, + issue_count=None, + ) + assert md == md_test