Browse Source

[scrobblers] Add mopidy source to scrobbler

Colin Powell 9 months ago
parent
commit
f876caabe1

+ 2 - 0
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(

+ 2 - 0
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

+ 7 - 0
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,
     )