From f876caabe13f130f6fca28b4e23b75c900e4b17c Mon Sep 17 00:00:00 2001 From: Colin Powell Date: Thu, 26 Sep 2024 22:07:01 -0400 Subject: [PATCH] [scrobblers] Add mopidy source to scrobbler --- vrobbler/apps/scrobbles/mixins.py | 2 ++ vrobbler/apps/scrobbles/models.py | 2 ++ vrobbler/apps/scrobbles/scrobblers.py | 7 +++++++ 3 files changed, 11 insertions(+) diff --git a/vrobbler/apps/scrobbles/mixins.py b/vrobbler/apps/scrobbles/mixins.py index 243e38f..75ed383 100644 --- a/vrobbler/apps/scrobbles/mixins.py +++ b/vrobbler/apps/scrobbles/mixins.py @@ -53,6 +53,7 @@ class ScrobblableMixin(TimeStampedModel): source: str = "Vrobbler", playback_position_seconds: int = 0, status: str = "started", + log: Optional[dict] = None, ): Scrobble = apps.get_model("scrobbles", "Scrobble") scrobble_data = { @@ -61,6 +62,7 @@ class ScrobblableMixin(TimeStampedModel): "source": source, "playback_position_seconds": playback_position_seconds, "status": status, + "log": log, } logger.info( diff --git a/vrobbler/apps/scrobbles/models.py b/vrobbler/apps/scrobbles/models.py index d8f52d8..aee835e 100644 --- a/vrobbler/apps/scrobbles/models.py +++ b/vrobbler/apps/scrobbles/models.py @@ -976,6 +976,8 @@ class Scrobble(TimeStampedModel): scrobble.can_be_updated or scrobble_data["playback_status"] == "stopped" ): + if "log" in scrobble_data.keys(): + scrobble_data["log"] = scrobble.log | scrobble_data["log"] return scrobble.update(scrobble_data) # Discard status before creating diff --git a/vrobbler/apps/scrobbles/scrobblers.py b/vrobbler/apps/scrobbles/scrobblers.py index d70606a..7c7d505 100644 --- a/vrobbler/apps/scrobbles/scrobblers.py +++ b/vrobbler/apps/scrobbles/scrobblers.py @@ -53,6 +53,12 @@ def mopidy_scrobble_media(post_data: dict, user_id: int) -> Scrobble: else: media_obj = get_or_create_track(post_data, MOPIDY_POST_KEYS) + log = {} + try: + log = {"mopidy_source": post_data.get("mopidy_ur").split(":")[0]} + except IndexError: + pass + return media_obj.scrobble_for_user( user_id, source="Mopidy", @@ -61,6 +67,7 @@ def mopidy_scrobble_media(post_data: dict, user_id: int) -> Scrobble: / 1000 ), status=post_data.get(MOPIDY_POST_KEYS.get("STATUS"), ""), + log=log, )