From: Christian Heller <c.heller@plomlompom.de>
Date: Tue, 17 Dec 2024 00:34:01 +0000 (+0100)
Subject: Identify "playing" entry in playlist by playlist.idx rather than digest, to avoid... 
X-Git-Url: https://plomlompom.com/repos/%7B%7Bprefix%7D%7D/%7B%7B%20web_path%20%7D%7D/static/process?a=commitdiff_plain;h=7a998f230c183544f48dc52674a29d23343550c4;p=ytplom

Identify "playing" entry in playlist by playlist.idx rather than digest, to avoid entries of same file claiming to be "playing" in parallel.
---

diff --git a/src/templates/playlist.tmpl b/src/templates/playlist.tmpl
index eed3d1e..ad5c18b 100644
--- a/src/templates/playlist.tmpl
+++ b/src/templates/playlist.tmpl
@@ -23,7 +23,7 @@ event_handlers.push(function(data) {  // update playlist
         tr.classList.add(CLS_PLAYLIST_ROW);
         const td_entry_control = new_child_to('td', tr);
         td_entry_control.classList.add('entry_control');
-        if (data.title_digest == file.digest) {
+        if (i == data.idx) {
             td_entry_control.textContent = 'playing'; }
         else {
             for (const [symbol, prefix] of [['>', 'jump'],
diff --git a/src/ytplom/http.py b/src/ytplom/http.py
index 165e5eb..6ccf282 100644
--- a/src/ytplom/http.py
+++ b/src/ytplom/http.py
@@ -410,7 +410,7 @@ class _TaskHandler(BaseHTTPRequestHandler):
                     'last_update': self.server.player.last_update,
                     'running': self.server.player.is_running,
                     'paused': self.server.player.is_paused,
-                    'title_digest': digest,
+                    'idx': self.server.player.idx,
                     'title_tags': tags,
                     'title': title}
                 if 'playlist' in params.as_dict:
diff --git a/src/ytplom/misc.py b/src/ytplom/misc.py
index 81406d0..3671779 100644
--- a/src/ytplom/misc.py
+++ b/src/ytplom/misc.py
@@ -620,6 +620,11 @@ class Player:
         self._kill_mpv()
         self._start_mpv()
 
+    @property
+    def idx(self) -> int:
+        """Read-only access to ._idx."""
+        return self._idx
+
     @property
     def empty(self) -> bool:
         """Return if playlist empty."""