Explorar o código

Clean up artist junk

Colin Powell %!s(int64=2) %!d(string=hai) anos
pai
achega
f86ae61acf
Modificáronse 1 ficheiros con 15 adicións e 9 borrados
  1. 15 9
      mopidy_webhooks/frontend.py

+ 15 - 9
mopidy_webhooks/frontend.py

@@ -22,22 +22,23 @@ class WebhooksFrontend(pykka.ThreadingActor, CoreListener):
         self.webhook_tokens = self.config["webhooks"]["tokens"].split(",")
 
     def _build_post_data(self, track) -> dict:
-        primary_artist = track.artists[0]
+        artists = ", ".join(sorted([a.name for a in track.artists]))
+        artists_list = [a for a in track.artists]
+        try:
+            musicbrainz_artist_id = artists_list[0].musicbrainz_id
+        except IndexError:
+            musicbrainz_artist_id = None
         duration = track.length and track.length // 1000 or 0
         return {
             "name": track.name,
-            "artist": primary_artist.name,
+            "artist": artists,
             "album": track.album,
             "track_number": track.track_no,
             "run_time_ticks": track.length,
             "run_time": str(duration),
             "musicbrainz_track_id": track.musicbrainz_id,
-            "musicbrainz_album_id": track.album.musicbrainz_id
-            if track.album
-            else None,
-            "musicbrainz_artist_id": track.artist.musicbrainz_id
-            if primary_artist
-            else None,
+            "musicbrainz_album_id": track.album.musicbrainz_id,
+            "musicbrainz_artist_id": musicbrainz_artist_id,
         }
 
     def _post_update_to_webhooks(self, post_data: dict, status: str):
@@ -61,6 +62,7 @@ class WebhooksFrontend(pykka.ThreadingActor, CoreListener):
 
     def track_playback_started(self, tl_track):
         track = tl_track.track
+        artists = ", ".join(sorted([a.name for a in track.artists]))
         self.last_start_time = int(time.time())
         logger.debug(f"Now playing track: {track.artists[0]} - {track.name}")
         post_data = self._build_post_data(tl_track.track)
@@ -69,11 +71,12 @@ class WebhooksFrontend(pykka.ThreadingActor, CoreListener):
         if not self.webhook_urls:
             logger.info("No webhook URLS are configured ")
             return
-
+        logger.info(f"Scrobbling via webhooks: {artists} - {track.name}")
         self._post_update_to_webhooks(post_data, "started")
 
     def track_playback_ended(self, tl_track, time_position):
         track = tl_track.track
+        artists = ", ".join(sorted([a.name for a in track.artists]))
         duration = track.length and track.length // 1000 or 0
         time_position = time_position // 1000
 
@@ -88,6 +91,9 @@ class WebhooksFrontend(pykka.ThreadingActor, CoreListener):
 
         if self.last_start_time is None:
             self.last_start_time = int(time.time()) - duration
+        logger.info(
+            f"Scrobbling finished via webhooks: {artists} - {track.name}"
+        )
         logger.debug(
             f"Sending scroble to webhooks for track: {track.artists} - {track.name}"
         )