diff options
Diffstat (limited to 'gallery_dl/util.py')
| -rw-r--r-- | gallery_dl/util.py | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/gallery_dl/util.py b/gallery_dl/util.py index ecb496d..128f48b 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -218,18 +218,34 @@ def to_string(value): def datetime_to_timestamp(dt): - """Convert naive UTC datetime to timestamp""" + """Convert naive UTC datetime to Unix timestamp""" return (dt - EPOCH) / SECOND def datetime_to_timestamp_string(dt): - """Convert naive UTC datetime to timestamp string""" + """Convert naive UTC datetime to Unix timestamp string""" try: return str((dt - EPOCH) // SECOND) except Exception: return "" +if sys.hexversion < 0x30c0000: + # Python <= 3.11 + datetime_utcfromtimestamp = datetime.datetime.utcfromtimestamp + datetime_utcnow = datetime.datetime.utcnow + datetime_from_timestamp = datetime_utcfromtimestamp +else: + # Python >= 3.12 + def datetime_from_timestamp(ts=None): + """Convert Unix timestamp to naive UTC datetime""" + Y, m, d, H, M, S, _, _, _ = time.gmtime(ts) + return datetime.datetime(Y, m, d, H, M, S) + + datetime_utcfromtimestamp = datetime_from_timestamp + datetime_utcnow = datetime_from_timestamp + + def json_default(obj): if isinstance(obj, CustomNone): return None @@ -516,6 +532,15 @@ class LazyPrompt(): return getpass.getpass() +class NullContext(): + + def __enter__(self): + return None + + def __exit__(self, exc_type, exc_value, traceback): + pass + + class CustomNone(): """None-style type that supports more operations than regular None""" __slots__ = () @@ -760,8 +785,9 @@ def build_extractor_filter(categories, negate=True, special=None): if catsub: def test(extr): for category, subcategory in catsub: - if category in (extr.category, extr.basecategory) and \ - subcategory == extr.subcategory: + if subcategory == extr.subcategory and ( + category == extr.category or + category == extr.basecategory): return not negate return negate tests.append(test) |
