[scrobbles] Fix log data messiness with Jellyfin and Mopidy
This commit is contained in:
@ -77,6 +77,12 @@ def mopidy_scrobble_media(post_data: dict, user_id: int) -> Scrobble:
|
|||||||
media_obj = PodcastEpisode.find_or_create(**parsed_data)
|
media_obj = PodcastEpisode.find_or_create(**parsed_data)
|
||||||
else:
|
else:
|
||||||
# TODO this kind of sucks, there's gotta be a way to get this in one shot
|
# TODO this kind of sucks, there's gotta be a way to get this in one shot
|
||||||
|
media_obj = Track.find_or_create(
|
||||||
|
title=post_data.get("name", ""),
|
||||||
|
artist_name=post_data.get("artist", ""),
|
||||||
|
album_name=post_data.get("album", ""),
|
||||||
|
run_time_seconds=post_data.get("run_time", 900000),
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
album_id = (
|
album_id = (
|
||||||
Album.objects.filter(name=post_data.get("album", ""))
|
Album.objects.filter(name=post_data.get("album", ""))
|
||||||
@ -85,12 +91,6 @@ def mopidy_scrobble_media(post_data: dict, user_id: int) -> Scrobble:
|
|||||||
)
|
)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
media_obj = Track.find_or_create(
|
|
||||||
title=post_data.get("name", ""),
|
|
||||||
artist_name=post_data.get("artist", ""),
|
|
||||||
album_name=post_data.get("album", ""),
|
|
||||||
run_time_seconds=post_data.get("run_time", 900000),
|
|
||||||
)
|
|
||||||
|
|
||||||
log = {}
|
log = {}
|
||||||
try:
|
try:
|
||||||
@ -144,6 +144,7 @@ def jellyfin_scrobble_media(
|
|||||||
post_data.get(JELLYFIN_POST_KEYS.get("PLAYBACK_POSITION_TICKS"), 1)
|
post_data.get(JELLYFIN_POST_KEYS.get("PLAYBACK_POSITION_TICKS"), 1)
|
||||||
/ 10000000
|
/ 10000000
|
||||||
)
|
)
|
||||||
|
album_id = None
|
||||||
if media_type == Scrobble.MediaType.VIDEO:
|
if media_type == Scrobble.MediaType.VIDEO:
|
||||||
imdb_id = post_data.get("Provider_imdb", "")
|
imdb_id = post_data.get("Provider_imdb", "")
|
||||||
media_obj = Video.find_or_create(imdb_id)
|
media_obj = Video.find_or_create(imdb_id)
|
||||||
@ -156,6 +157,14 @@ def jellyfin_scrobble_media(
|
|||||||
post_data.get("RunTime", 900000)
|
post_data.get("RunTime", 900000)
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
try:
|
||||||
|
album_id = (
|
||||||
|
Album.objects.filter(name=post_data.get("Album", ""))
|
||||||
|
.first()
|
||||||
|
.id
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
# A hack because we don't worry about updating music ... we either finish it or we don't
|
# A hack because we don't worry about updating music ... we either finish it or we don't
|
||||||
playback_position_seconds = 0
|
playback_position_seconds = 0
|
||||||
|
|
||||||
@ -172,13 +181,17 @@ def jellyfin_scrobble_media(
|
|||||||
elif post_data.get("NotificationType") == "PlaybackStop":
|
elif post_data.get("NotificationType") == "PlaybackStop":
|
||||||
playback_status = "stopped"
|
playback_status = "stopped"
|
||||||
|
|
||||||
|
log = {"raw_data": post_data}
|
||||||
|
if album_id:
|
||||||
|
log["album_id"] = album_id
|
||||||
|
|
||||||
return media_obj.scrobble_for_user(
|
return media_obj.scrobble_for_user(
|
||||||
user_id,
|
user_id,
|
||||||
source=post_data.get(JELLYFIN_POST_KEYS.get("SOURCE")),
|
source=post_data.get(JELLYFIN_POST_KEYS.get("SOURCE")),
|
||||||
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_id": media_obj.album_id, "raw_data": post_data},
|
log=log,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user