From 6e23efe1e46281440b9afe5dd9e2dcee64743526 Mon Sep 17 00:00:00 2001 From: Glenn Thompson Date: Tue, 3 Mar 2026 23:25:23 +0300 Subject: [PATCH] Fix listener count and recently-played rendering - Use total listener count across all mounts instead of per-mount (asteroid.lisp icecast-status API, stream-harmony.lisp now-playing) - Fix recently-played.lisp: equal -> = for ParenScript string comparison - Remove non-existent asteroid-shuffle.mp3 mount from recently-played JS - Map all mount references to existing asteroid.mp3/asteroid.aac --- asteroid.lisp | 2 +- parenscript/recently-played.lisp | 12 +++++------- stream-harmony.lisp | 3 +-- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/asteroid.lisp b/asteroid.lisp index c281ee2..1df9ee8 100644 --- a/asteroid.lisp +++ b/asteroid.lisp @@ -1390,7 +1390,7 @@ ;; Return status from cl-streamer directly (let* ((now-playing (get-now-playing-stats "asteroid.mp3")) (title (if now-playing (cdr (assoc :title now-playing)) "Unknown")) - (listeners (if now-playing (cdr (assoc :listeners now-playing)) 0))) + (listeners (or (cl-streamer:get-listener-count) 0))) (api-output `(("icestats" . (("source" . (("listenurl" . ,(format nil "~a/asteroid.mp3" *stream-base-url*)) ("title" . ,title) diff --git a/parenscript/recently-played.lisp b/parenscript/recently-played.lisp index 121a294..ee14c28 100644 --- a/parenscript/recently-played.lisp +++ b/parenscript/recently-played.lisp @@ -27,12 +27,10 @@ (defun get-current-mount-for-recently-played () (let ((channel (get-current-channel)) (quality (get-current-quality))) - (if (= channel "shuffle") - "asteroid-shuffle.mp3" - (cond - ((= quality "low") "asteroid-low.mp3") - ((= quality "mp3") "asteroid.mp3") - (t "asteroid.aac"))))) + (cond + ((= quality "low") "asteroid.mp3") + ((= quality "mp3") "asteroid.mp3") + (t "asteroid.aac")))) ;; Update recently played tracks display (defun update-recently-played () @@ -43,7 +41,7 @@ (then (lambda (result) ;; Radiance wraps API responses in a data envelope (let ((data (or (ps:@ result data) result))) - (if (and (equal (ps:@ data status) "success") + (if (and (= (ps:@ data status) "success") (ps:@ data tracks) (> (ps:@ data tracks length) 0)) (let ((list-el (ps:chain document (get-element-by-id "recently-played-list")))) diff --git a/stream-harmony.lisp b/stream-harmony.lisp index c9dbad7..3d62bc3 100644 --- a/stream-harmony.lisp +++ b/stream-harmony.lisp @@ -82,8 +82,7 @@ (cl-streamer/harmony:pipeline-current-track *harmony-pipeline*)) (let* ((track-info (cl-streamer/harmony:pipeline-current-track *harmony-pipeline*)) (display-title (or (getf track-info :display-title) "Unknown")) - (listeners (cl-streamer:get-listener-count - (format nil "/~A" mount))) + (listeners (cl-streamer:get-listener-count)) (track-id (or (find-track-by-title display-title) (find-track-by-file-path (getf track-info :file))))) `((:listenurl . ,(format nil "~A/~A" *stream-base-url* mount))