From 2cd15a743437a7bad908f368c0708f7cfb7b0632 Mon Sep 17 00:00:00 2001 From: sandersantema Date: Thu, 13 May 2021 12:32:42 +0200 Subject: [PATCH 1/4] Add itunes_dateadded to itunes metasync plugin --- beetsplug/metasync/itunes.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/beetsplug/metasync/itunes.py b/beetsplug/metasync/itunes.py index 067ca8d91..f8d500336 100644 --- a/beetsplug/metasync/itunes.py +++ b/beetsplug/metasync/itunes.py @@ -69,6 +69,7 @@ class Itunes(MetaSource): 'itunes_skipcount': types.INTEGER, 'itunes_lastplayed': DateType(), 'itunes_lastskipped': DateType(), + 'itunes_dateadded': DateType(), } def __init__(self, config, log): @@ -117,10 +118,11 @@ class Itunes(MetaSource): item.itunes_playcount = result.get('Play Count') item.itunes_skipcount = result.get('Skip Count') - if result.get('Play Date UTC'): - item.itunes_lastplayed = mktime( - result.get('Play Date UTC').timetuple()) + if (result_playdateutc := result.get("Play Date UTC")) : + item.itunes_lastplayed = mktime(result_playdateutc.timetuple()) - if result.get('Skip Date'): - item.itunes_lastskipped = mktime( - result.get('Skip Date').timetuple()) + if (result_skipdate := result.get("Skip Date")) : + item.itunes_lastskipped = mktime(result_skipdate.timetuple()) + + if (result_dateadded := result.get("Date Added")) : + item.itunes_dateadded = mktime(result_dateadded.timetuple()) From 51b22a41f0e672f540ca928b97cb68b1c63618ad Mon Sep 17 00:00:00 2001 From: sandersantema Date: Thu, 13 May 2021 12:42:59 +0200 Subject: [PATCH 2/4] Add tests for new itunes_dateadded function of metasync plugin --- test/test_metasync.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/test_metasync.py b/test/test_metasync.py index ef16c57a2..2fccfe3b8 100644 --- a/test/test_metasync.py +++ b/test/test_metasync.py @@ -100,6 +100,7 @@ class MetaSyncTest(_common.TestCase, TestHelper): self.assertIn('itunes_skipcount: 3', out) self.assertIn('itunes_lastplayed: 2015-05-04 12:20:51', out) self.assertIn('itunes_lastskipped: 2015-02-05 15:41:04', out) + self.assertIn('itunes_dateadded: 2014-04-24 09:28:38', out) self.assertEqual(self.lib.items()[0].itunes_rating, 60) def test_sync_from_itunes(self): @@ -111,12 +112,16 @@ class MetaSyncTest(_common.TestCase, TestHelper): self.assertFalse(hasattr(self.lib.items()[0], 'itunes_lastplayed')) self.assertEqual(self.lib.items()[0].itunes_lastskipped, _parsetime('2015-02-05 15:41:04')) + self.assertEqual(self.lib.items()[0].itunes_dateadded, + _parsetime('2014-04-24 09:28:38')) self.assertEqual(self.lib.items()[1].itunes_rating, 100) self.assertEqual(self.lib.items()[1].itunes_playcount, 31) self.assertEqual(self.lib.items()[1].itunes_skipcount, 0) self.assertEqual(self.lib.items()[1].itunes_lastplayed, _parsetime('2015-05-04 12:20:51')) + self.assertEqual(self.lib.items()[1].itunes_dateadded, + _parsetime('2014-04-24 09:28:38')) self.assertFalse(hasattr(self.lib.items()[1], 'itunes_lastskipped')) From f3e1d904708c601dd6bb34eae79d46e87053c839 Mon Sep 17 00:00:00 2001 From: sandersantema Date: Thu, 13 May 2021 12:58:26 +0200 Subject: [PATCH 3/4] Avoid usage of walrus operator which is only compatible with > 3.8 --- beetsplug/metasync/itunes.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/beetsplug/metasync/itunes.py b/beetsplug/metasync/itunes.py index f8d500336..3cf34e58f 100644 --- a/beetsplug/metasync/itunes.py +++ b/beetsplug/metasync/itunes.py @@ -118,11 +118,14 @@ class Itunes(MetaSource): item.itunes_playcount = result.get('Play Count') item.itunes_skipcount = result.get('Skip Count') - if (result_playdateutc := result.get("Play Date UTC")) : - item.itunes_lastplayed = mktime(result_playdateutc.timetuple()) + if result.get('Play Date UTC'): + item.itunes_lastplayed = mktime( + result.get('Play Date UTC').timetuple()) - if (result_skipdate := result.get("Skip Date")) : - item.itunes_lastskipped = mktime(result_skipdate.timetuple()) + if result.get('Skip Date'): + item.itunes_lastskipped = mktime( + result.get('Skip Date').timetuple()) - if (result_dateadded := result.get("Date Added")) : - item.itunes_dateadded = mktime(result_dateadded.timetuple()) + if result.get('Date Added'): + item.itunes_dateadded = mktime( + result.get('Date Added').timetuple()) From 81ef3c2fc34231b1b6e06bf3d2f1109b3ae985b5 Mon Sep 17 00:00:00 2001 From: sandersantema Date: Thu, 13 May 2021 14:44:51 +0200 Subject: [PATCH 4/4] Update changelog --- docs/changelog.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index fac8f50af..892900ba9 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -222,6 +222,7 @@ Other new things: Thanks to :user:`arogl`. :bug:`3906` * Get ISRC identifiers from musicbrainz Thanks to :user:`aereaux`. +* :doc:`/plugins/metasync`: The ``metasync`` plugin now also fetches the ``Date Added`` field from iTunes databases and stores it in the``itunes_dateadded`` field.Thanks to :user:`sandersantema`. .. _py7zr: https://pypi.org/project/py7zr/