From aac00a2024bc959c3151ed6ed3895f1ed21e8300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Sat, 9 Jan 2021 01:45:46 +0100 Subject: [PATCH] add 'd' conversion for format strings to convert a timestamp to a formattable 'datetime' object. For example '{created_at!d:%Y-%m-%d}' transforms the timestamp in 'created_at' into a 'datetime' object and then formats its content using '%Y-%m-%d' as template. 1262304000 -> datetime(2010, 1, 1) -> "2010-01-01" --- gallery_dl/util.py | 2 ++ test/test_util.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/gallery_dl/util.py b/gallery_dl/util.py index d91d29ad..879af891 100644 --- a/gallery_dl/util.py +++ b/gallery_dl/util.py @@ -506,6 +506,7 @@ class Formatter(): - "c": calls str.capitalize - "C": calls string.capwords - "t": calls str.strip + - "d": calls text.parse_timestamp - "U": calls urllib.parse.unquote - "S": calls util.to_string() - Example: {f!l} -> "example"; {f!u} -> "EXAMPLE" @@ -537,6 +538,7 @@ class Formatter(): "c": str.capitalize, "C": string.capwords, "t": str.strip, + "d": text.parse_timestamp, "U": urllib.parse.unquote, "S": to_string, "s": str, diff --git a/test/test_util.py b/test/test_util.py index fd659a07..159c4bc2 100644 --- a/test/test_util.py +++ b/test/test_util.py @@ -14,6 +14,7 @@ import unittest import io import random import string +import datetime import http.cookiejar sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) @@ -267,6 +268,7 @@ class TestFormatter(unittest.TestCase): "n": None, "s": " \n\r\tSPACE ", "u": "%27%3C%20/%20%3E%27", + "t": 1262304000, "name": "Name", "title1": "Title", "title2": "", @@ -289,6 +291,9 @@ class TestFormatter(unittest.TestCase): self._run_test("{a!S}", self.kwdict["a"]) self._run_test("{l!S}", "a, b, c") self._run_test("{n!S}", "") + self._run_test("{t!d}", datetime.datetime(2010, 1, 1)) + self._run_test("{t!d:%Y-%m-%d}", "2010-01-01") + with self.assertRaises(KeyError): self._run_test("{a!q}", "hello world")