Merge pull request #4996 from arsaboo/spotify_isrc

Support writing ISRC to tracks in Spotify plugin
This commit is contained in:
J0J0 Todos 2023-11-17 11:20:01 +01:00 committed by GitHub
commit 293c3c19a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 5 deletions

View file

@ -658,8 +658,11 @@ class SpotifyPlugin(MetadataSourcePlugin, BeetsPlugin):
self._log.debug("No track_id present for: {}", item)
continue
popularity = self.track_popularity(spotify_track_id)
popularity, isrc, ean, upc = self.track_info(spotify_track_id)
item["spotify_track_popularity"] = popularity
item["isrc"] = isrc
item["ean"] = ean
item["upc"] = upc
audio_features = self.track_audio_features(spotify_track_id)
if audio_features is None:
self._log.info("No audio features found for: {}", item)
@ -674,13 +677,22 @@ class SpotifyPlugin(MetadataSourcePlugin, BeetsPlugin):
if write:
item.try_write()
def track_popularity(self, track_id=None):
"""Fetch a track popularity by its Spotify ID."""
def track_info(self, track_id=None):
"""Fetch a track's popularity and external IDs using its Spotify ID."""
track_data = self._handle_response(
requests.get, self.track_url + track_id
)
self._log.debug("track_data: {}", track_data.get("popularity"))
return track_data.get("popularity")
self._log.debug(
"track_popularity: {} and track_isrc: {}",
track_data.get("popularity"),
track_data.get("external_ids").get("isrc"),
)
return (
track_data.get("popularity"),
track_data.get("external_ids").get("isrc"),
track_data.get("external_ids").get("ean"),
track_data.get("external_ids").get("upc"),
)
def track_audio_features(self, track_id=None):
"""Fetch track audio features by its Spotify ID."""

View file

@ -17,6 +17,8 @@ Major new features:
New features:
* :doc:`plugins/spotify`: We now fetch track's ISRC, EAN, and UPC identifiers from Spotify when using the ``spotifysync`` command.
:bug:`4992`
* :doc:`plugins/discogs`: supply a value for the `cover_art_url` attribute, for use by `fetchart`.
:bug:`429`
* :ref:`update-cmd`: added ```-e``` flag for excluding fields from being updated.