diff --git a/mopidy_webhooks/frontend.py b/mopidy_webhooks/frontend.py index 6f0e5b1..59c63d6 100644 --- a/mopidy_webhooks/frontend.py +++ b/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}" )