[PATCH] * emms-listenbrainz-scrobbler.el: store current listenbrainz track
Jake Coble <[email protected]> Sat, 20 Dec 2025 17:11:28 -0500
| Newsgroups | gmane.emacs.emms.user |
|---|---|
| Message-ID | <[email protected]> |
---
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