From c3eb9b60c0b320a8cb0e76947287851ceae96e1d Mon Sep 17 00:00:00 2001 From: Tom Parker Date: Fri, 10 Jun 2016 12:41:02 +0100 Subject: [PATCH 1/2] If tags date isn't a valid value for Python, skip the tag --- mopidy/audio/tags.py | 14 ++++++++++---- tests/audio/test_tags.py | 8 ++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/mopidy/audio/tags.py b/mopidy/audio/tags.py index 5ae86468..459bb1e3 100644 --- a/mopidy/audio/tags.py +++ b/mopidy/audio/tags.py @@ -44,10 +44,16 @@ gstreamer-GstTagList.html value = taglist.get_value_index(tag, i) if isinstance(value, GLib.Date): - date = datetime.date( - value.get_year(), value.get_month(), value.get_day()) - result[tag].append(date.isoformat().decode('utf-8')) - if isinstance(value, Gst.DateTime): + try: + date = datetime.date( + value.get_year(), value.get_month(), value.get_day()) + result[tag].append(date.isoformat().decode('utf-8')) + except ValueError: + logger.log( + logging.DEBUG, + 'Ignoring dodgy date value: %d-%d-%d', + value.get_year(), value.get_month(), value.get_day()) + elif isinstance(value, Gst.DateTime): result[tag].append(value.to_iso8601_string().decode('utf-8')) elif isinstance(value, bytes): result[tag].append(value.decode('utf-8', 'replace')) diff --git a/tests/audio/test_tags.py b/tests/audio/test_tags.py index 01475124..d85bcc12 100644 --- a/tests/audio/test_tags.py +++ b/tests/audio/test_tags.py @@ -44,6 +44,14 @@ class TestConvertTaglist(object): assert isinstance(result[Gst.TAG_DATE][0], compat.text_type) assert result[Gst.TAG_DATE][0] == '2014-01-07' + def test_date_tag_bad_value(self): + date = GLib.Date.new_dmy(7, 1, 10000) + taglist = self.make_taglist(Gst.TAG_DATE, [date]) + + result = tags.convert_taglist(taglist) + + assert len(result[Gst.TAG_DATE]) == 0 + def test_date_time_tag(self): taglist = self.make_taglist(Gst.TAG_DATE_TIME, [ Gst.DateTime.new_from_iso8601_string(b'2014-01-07 14:13:12') From ffe32ab7c7cbb64997654077ad366b288e5ee751 Mon Sep 17 00:00:00 2001 From: Tom Parker Date: Mon, 13 Jun 2016 22:03:51 +0100 Subject: [PATCH 2/2] Use logger.debug, not logging.log(logging.DEBUG --- mopidy/audio/tags.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mopidy/audio/tags.py b/mopidy/audio/tags.py index 459bb1e3..7fabefd6 100644 --- a/mopidy/audio/tags.py +++ b/mopidy/audio/tags.py @@ -49,8 +49,7 @@ gstreamer-GstTagList.html value.get_year(), value.get_month(), value.get_day()) result[tag].append(date.isoformat().decode('utf-8')) except ValueError: - logger.log( - logging.DEBUG, + logger.debug( 'Ignoring dodgy date value: %d-%d-%d', value.get_year(), value.get_month(), value.get_day()) elif isinstance(value, Gst.DateTime):