From 31f67934952be2f3c80573eea16d2eb84a3b707f Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Thu, 25 Feb 2021 19:27:24 +0100 Subject: [PATCH] rclaudio: catch exception when parsing bad date, set date to the epoch --- src/filters/rclaudio | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/filters/rclaudio b/src/filters/rclaudio index 52e56cfc..c92894c4 100755 --- a/src/filters/rclaudio +++ b/src/filters/rclaudio @@ -255,18 +255,21 @@ class AudioTagExtractor(RclBaseHandler): # was wrong, because dmtime is the unix integer time. We have # removed the alias, and set dmtime from the parsed date value. def parsedate(self, dt): - dt = dt.decode('utf-8', errors='ignore') - if len(dt) > 10: - dt = dt[0:10] - l = dt.split('-') - if len(l) > 3 or len(l) == 2 or len(l[0]) != 4 or l[0] == '0000': - return '' - if len(l) == 1: - pdt = datetime.datetime.strptime(dt, "%Y") - elif len(l) == 3: - pdt = datetime.datetime.strptime(dt, "%Y-%m-%d") - val = time.mktime(pdt.timetuple()) - return "%d" % val + try: + dt = dt.decode('utf-8', errors='ignore') + if len(dt) > 10: + dt = dt[0:10] + l = dt.split('-') + if len(l) > 3 or len(l) == 2 or len(l[0]) != 4 or l[0] == '0000': + return '' + if len(l) == 1: + pdt = datetime.datetime.strptime(dt, "%Y") + elif len(l) == 3: + pdt = datetime.datetime.strptime(dt, "%Y-%m-%d") + val = time.mktime(pdt.timetuple()) + return "%d" % val + except: + return 0 def html_text(self, filename):