From 72b18d701f7bf4b3190ad21a67780e532befb41a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Thu, 2 Nov 2023 15:23:28 +0100 Subject: [PATCH] represent util.NONE as 'null' in JSON output was '"None"' before --- gallery_dl/postprocessor/metadata.py | 3 ++- gallery_dl/util.py | 10 ++++++++-- test/test_util.py | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gallery_dl/postprocessor/metadata.py b/gallery_dl/postprocessor/metadata.py index 5004bed6..93dd9a19 100644 --- a/gallery_dl/postprocessor/metadata.py +++ b/gallery_dl/postprocessor/metadata.py @@ -206,7 +206,8 @@ class MetadataPP(PostProcessor): sort_keys=options.get("sort", False), separators=options.get("separators"), indent=options.get("indent", indent), - check_circular=False, default=str, + check_circular=False, + default=util.json_default, ) diff --git a/gallery_dl/util.py b/gallery_dl/util.py index 62e7b4aa..6255d49e 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -223,8 +223,14 @@ def datetime_to_timestamp_string(dt): return "" +def json_default(obj): + if isinstance(obj, CustomNone): + return None + return str(obj) + + json_loads = json._default_decoder.decode -json_dumps = json.JSONEncoder(default=str).encode +json_dumps = json.JSONEncoder(default=json_default).encode def dump_json(obj, fp=sys.stdout, ensure_ascii=True, indent=4): @@ -233,7 +239,7 @@ def dump_json(obj, fp=sys.stdout, ensure_ascii=True, indent=4): obj, fp, ensure_ascii=ensure_ascii, indent=indent, - default=str, + default=json_default, sort_keys=True, ) fp.write("\n") diff --git a/test/test_util.py b/test/test_util.py index 0813a0bc..780f4751 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -750,6 +750,7 @@ def hash(value): self.assertIs(obj(), obj) self.assertIs(obj(1, "a"), obj) self.assertIs(obj(foo="bar"), obj) + self.assertEqual(util.json_dumps(obj), "null") i = 0 for _ in obj: