diff --git a/beetsplug/spotify.py b/beetsplug/spotify.py index 987b18aaf..705209de5 100644 --- a/beetsplug/spotify.py +++ b/beetsplug/spotify.py @@ -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.""" diff --git a/docs/changelog.rst b/docs/changelog.rst index 728605d81..1ff5b59c8 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -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.