[scrobbles] Save album_id to log

This commit is contained in:
2026-03-11 15:57:57 -04:00
parent 5d9834b63d
commit 88a8b8320c
2 changed files with 44 additions and 1 deletions

View File

@ -291,6 +291,49 @@ def test_jellyfin_track_webhook_stores_raw_data(
assert scrobble.log["raw_data"]["Name"] == "Emotion" 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.skip("Need to refactor")
@pytest.mark.django_db @pytest.mark.django_db
@patch("music.utils.lookup_artist_from_mb", return_value={}) @patch("music.utils.lookup_artist_from_mb", return_value={})

View File

@ -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")), source_id=post_data.get(JELLYFIN_POST_KEYS.get("MEDIA_SOURCE_ID")),
playback_position_seconds=playback_position_seconds, playback_position_seconds=playback_position_seconds,
status=playback_status, status=playback_status,
log={"album": post_data.get("Album", ""), "raw_data": post_data}, log={"album_id": media_obj.album_id, "raw_data": post_data},
) )