From 88a8b8320c6a7e2e6ffc29dcbd991ad554a7f293 Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Wed, 11 Mar 2026 15:57:57 -0400 Subject: [PATCH] [scrobbles] Save album_id to log --- tests/scrobbles_tests/test_views.py | 43 +++++++++++++++++++++++++++ vrobbler/apps/scrobbles/scrobblers.py | 2 +- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/tests/scrobbles_tests/test_views.py b/tests/scrobbles_tests/test_views.py index 1c3c057..c697d89 100644 --- a/tests/scrobbles_tests/test_views.py +++ b/tests/scrobbles_tests/test_views.py @@ -291,6 +291,49 @@ def test_jellyfin_track_webhook_stores_raw_data( assert scrobble.log["raw_data"]["Name"] == "Emotion" +@pytest.mark.django_db +@patch("music.models.Artist.find_or_create") +@patch("music.models.Track.find_or_create") +def test_jellyfin_track_webhook_stores_album_id( + mock_track_fc, + mock_artist_fc, + client, + valid_auth_token, + jellyfin_track, +): + artist = Artist.objects.create(name="Carly Rae Jepsen") + album = Album.objects.create(name="Emotion", album_artist=artist) + track = Track.objects.create( + title="Emotion", + artist=artist, + album=album, + base_run_time_seconds=60, + ) + track.albums.add(album) + + mock_artist_fc.return_value = artist + mock_track_fc.return_value = track + + url = reverse("scrobbles:jellyfin-webhook") + headers = {"Authorization": f"Token {valid_auth_token}"} + + with time_machine.travel(datetime(2024, 1, 14, 12, 00, 1)): + jellyfin_track.request_data["UtcTimestamp"] = timezone.now().strftime( + "%Y-%m-%d %H:%M:%S" + ) + response = client.post( + url, + jellyfin_track.request_json, + content_type="application/json", + headers=headers, + ) + assert response.status_code == 200 + + scrobble = Scrobble.objects.get(id=1) + assert "album_id" in scrobble.log + assert scrobble.log["album_id"] == album.id + + @pytest.mark.skip("Need to refactor") @pytest.mark.django_db @patch("music.utils.lookup_artist_from_mb", return_value={}) diff --git a/vrobbler/apps/scrobbles/scrobblers.py b/vrobbler/apps/scrobbles/scrobblers.py index 5a667c5..7a529c1 100644 --- a/vrobbler/apps/scrobbles/scrobblers.py +++ b/vrobbler/apps/scrobbles/scrobblers.py @@ -160,7 +160,7 @@ def jellyfin_scrobble_media(post_data: dict, user_id: int) -> Optional[Scrobble] source_id=post_data.get(JELLYFIN_POST_KEYS.get("MEDIA_SOURCE_ID")), playback_position_seconds=playback_position_seconds, status=playback_status, - log={"album": post_data.get("Album", ""), "raw_data": post_data}, + log={"album_id": media_obj.album_id, "raw_data": post_data}, )