Mark item played on Plex after playback finishes (#1266)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 3 May 2024 14:46:30 +0000 (16:46 +0200)
committerGitHub <noreply@github.com>
Fri, 3 May 2024 14:46:30 +0000 (16:46 +0200)
Mark item played on plex after playback finishes

music_assistant/server/providers/plex/__init__.py

index 01dced2bb83e6fa02169e787b120406e89642342..c15587238d9ffcbaa6949114f7cd25000e7afaed 100644 (file)
@@ -787,6 +787,16 @@ class PlexProvider(MusicProvider):
 
         return stream_details
 
+    async def on_streamed(self, streamdetails: StreamDetails, seconds_streamed: int) -> None:
+        """Handle callback when an item completed streaming."""
+
+        def mark_played():
+            item = streamdetails.data
+            params = {"key": str(item.ratingKey), "identifier": "com.plexapp.plugins.library"}
+            self._plex_server.query("/:/scrobble", params=params)
+
+        await asyncio.to_thread(mark_played)
+
     async def get_myplex_account_and_refresh_token(self, auth_token: str) -> MyPlexAccount:
         """Get a MyPlexAccount object and refresh the token if needed."""