---
 emms-listenbrainz-scrobbler.el | 34 ++++++++++++++++++++--------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/emms-listenbrainz-scrobbler.el b/emms-listenbrainz-scrobbler.el
index 2262d4e..34edb29 100644
--- a/emms-listenbrainz-scrobbler.el
+++ b/emms-listenbrainz-scrobbler.el
@@ -55,6 +55,10 @@ ;; To enable scrobbling call 
(emms-listenbrainz-scrobbler-enable).
   (concat "https://"; emms-listenbrainz-scrobbler-host "/1/submit-listens")
   "URL for submissions.")
 
+(defvar emms-listenbrainz-scrobbler-track
+  nil
+  "Track submitted to listenbrainz")
+
 (defvar emms-listenbrainz-scrobbler-track-play-start-timestamp
   nil
   "Time when a track started playing.")
@@ -208,25 +212,27 @@ ;; data but headers!
         (good-to-submit (eq (emms-track-type current-track) 'file)))
     (when good-to-submit
       (emms-listenbrainz-scrobbler-make-async-submission-call
-       current-track t))))
+       current-track t)
+      (setq emms-listenbrainz-scrobbler-track current-track))))
 
 (defun emms-listenbrainz-scrobbler-stop-hook ()
   "Submit the track to listenbrainz if we have listened long enough.
 
 That is, if it has been played for 240 seconds or half the length of the 
track."
-  (let ((current-track (emms-playlist-current-selected-track)))
-    (let ((track-length (emms-track-get current-track 'info-playing-time)))
-      (when (and track-length
-                ;; only submit files
-                (eq (emms-track-type current-track) 'file))
-       (when (and
-              ;; track must be longer than 30 secs
-              (> track-length 30)
-              ;; track must be played for more than 240 secs or
-              ;;   half the tracks length, whichever comes first.
-              (> emms-playing-time (min 240 (/ track-length 2))))
-         (emms-listenbrainz-scrobbler-make-async-submission-call
-          current-track))))))
+  (let ((track-length (emms-track-get emms-listenbrainz-scrobbler-track
+                                      'info-playing-time)))
+    (when (and track-length
+                      ;; only submit files
+                      (eq (emms-track-type emms-listenbrainz-scrobbler-track) 
'file))
+         (when (and
+                ;; track must be longer than 30 secs
+                (> track-length 30)
+                ;; track must be played for more than 240 secs or
+                ;;   half the tracks length, whichever comes first.
+                (> emms-playing-time (min 240 (/ track-length 2))))
+           (emms-listenbrainz-scrobbler-make-async-submission-call
+            emms-listenbrainz-scrobbler-track)
+        (setq emms-listenbrainz-scrobbler-track nil)))))
 
 
 ;;* Entry points
-- 
2.52.0


Reply via email to