From e29663c644a65846125f5792be52dc27feb68297 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Wed, 3 Feb 2021 02:45:00 +0530 Subject: #45 Allow date/time formatting in output template Closes #43 --- youtube_dlc/utils.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'youtube_dlc/utils.py') diff --git a/youtube_dlc/utils.py b/youtube_dlc/utils.py index 4aaee0b5f..be27a5622 100644 --- a/youtube_dlc/utils.py +++ b/youtube_dlc/utils.py @@ -50,6 +50,7 @@ from .compat import ( compat_html_entities_html5, compat_http_client, compat_integer_types, + compat_numeric_types, compat_kwargs, compat_os_name, compat_parse_qs, @@ -3673,6 +3674,18 @@ def url_or_none(url): return url if re.match(r'^(?:(?:https?|rt(?:m(?:pt?[es]?|fp)|sp[su]?)|mms|ftps?):)?//', url) else None +def strftime_or_none(timestamp, date_format, default=None): + datetime_object = None + try: + if isinstance(timestamp, compat_numeric_types): # unix timestamp + datetime_object = datetime.datetime.utcfromtimestamp(timestamp) + elif isinstance(timestamp, compat_str): # assume YYYYMMDD + datetime_object = datetime.datetime.strptime(timestamp, '%Y%m%d') + return datetime_object.strftime(date_format) + except (ValueError, TypeError, AttributeError): + return default + + def parse_duration(s): if not isinstance(s, compat_basestring): return None -- cgit v1.2.3