From 4bc057fd5edc70015043b81c21559055989c8343 Mon Sep 17 00:00:00 2001 From: Rahul Ahuja Date: Fri, 27 Sep 2019 17:11:47 -0700 Subject: [PATCH 1/5] Exclude invalid musical keys --- beetsplug/beatport.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beetsplug/beatport.py b/beetsplug/beatport.py index c3933ed73..8665fc392 100644 --- a/beetsplug/beatport.py +++ b/beetsplug/beatport.py @@ -259,7 +259,7 @@ class BeatportTrack(BeatportObject): self.track_number = data.get('trackNumber') if 'bpm' in data: self.bpm = data['bpm'] - if 'key' in data: + if data.get('key'): self.musical_key = six.text_type(data['key'].get('shortName')) # Use 'subgenre' and if not present, 'genre' as a fallback. From 13792bd8abe8f2c27d23f7b34dbebd10b27e64aa Mon Sep 17 00:00:00 2001 From: Rahul Ahuja Date: Fri, 27 Sep 2019 17:33:49 -0700 Subject: [PATCH 2/5] Always set musical_key --- beetsplug/beatport.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/beetsplug/beatport.py b/beetsplug/beatport.py index 8665fc392..de3554d95 100644 --- a/beetsplug/beatport.py +++ b/beetsplug/beatport.py @@ -259,8 +259,7 @@ class BeatportTrack(BeatportObject): self.track_number = data.get('trackNumber') if 'bpm' in data: self.bpm = data['bpm'] - if data.get('key'): - self.musical_key = six.text_type(data['key'].get('shortName')) + self.musical_key = six.text_type(data.get('key', {}).get('shortName')) # Use 'subgenre' and if not present, 'genre' as a fallback. if data.get('subGenres'): From 7b9ebcbf2f9e3287c5aaa83573dd28e7eb8b8d03 Mon Sep 17 00:00:00 2001 From: Rahul Ahuja Date: Fri, 27 Sep 2019 17:48:28 -0700 Subject: [PATCH 3/5] Properly guard against None key --- beetsplug/beatport.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/beetsplug/beatport.py b/beetsplug/beatport.py index de3554d95..655cd83b7 100644 --- a/beetsplug/beatport.py +++ b/beetsplug/beatport.py @@ -259,7 +259,9 @@ class BeatportTrack(BeatportObject): self.track_number = data.get('trackNumber') if 'bpm' in data: self.bpm = data['bpm'] - self.musical_key = six.text_type(data.get('key', {}).get('shortName')) + self.musical_key = six.text_type( + (data.get('key') or {}).get('shortName') + ) # Use 'subgenre' and if not present, 'genre' as a fallback. if data.get('subGenres'): From 80f54ecb9ee0e684b22919d6a9aa410ff56323ad Mon Sep 17 00:00:00 2001 From: Rahul Ahuja Date: Sat, 28 Sep 2019 10:01:19 -0700 Subject: [PATCH 4/5] Update changelog.rst --- docs/changelog.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 261b74505..af9f29c1f 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -73,6 +73,8 @@ New features: * :doc:`/plugins/beatport`: The plugin now gets the musical key, BPM and the genre for each track. :bug:`2080` +* :doc:`/plugins/beatport`: Fix default assignment of the musical key. + :bug:`3377` Fixes: From 3ffaaa1f37805e18e33d694f0af2d19217680d22 Mon Sep 17 00:00:00 2001 From: Rahul Ahuja Date: Sat, 28 Sep 2019 11:37:58 -0700 Subject: [PATCH 5/5] Default bpm to None --- beetsplug/beatport.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/beetsplug/beatport.py b/beetsplug/beatport.py index 655cd83b7..be76b902f 100644 --- a/beetsplug/beatport.py +++ b/beetsplug/beatport.py @@ -257,8 +257,7 @@ class BeatportTrack(BeatportObject): self.url = "https://beatport.com/track/{0}/{1}" \ .format(data['slug'], data['id']) self.track_number = data.get('trackNumber') - if 'bpm' in data: - self.bpm = data['bpm'] + self.bpm = data.get('bpm') self.musical_key = six.text_type( (data.get('key') or {}).get('shortName') )