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
This commit is contained in:
Glenn Thompson 2026-03-03 23:25:23 +03:00
parent fd1bc504a5
commit 6e23efe1e4
3 changed files with 7 additions and 10 deletions

View File

@ -1390,7 +1390,7 @@
;; Return status from cl-streamer directly ;; Return status from cl-streamer directly
(let* ((now-playing (get-now-playing-stats "asteroid.mp3")) (let* ((now-playing (get-now-playing-stats "asteroid.mp3"))
(title (if now-playing (cdr (assoc :title now-playing)) "Unknown")) (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 (api-output
`(("icestats" . (("source" . (("listenurl" . ,(format nil "~a/asteroid.mp3" *stream-base-url*)) `(("icestats" . (("source" . (("listenurl" . ,(format nil "~a/asteroid.mp3" *stream-base-url*))
("title" . ,title) ("title" . ,title)

View File

@ -27,12 +27,10 @@
(defun get-current-mount-for-recently-played () (defun get-current-mount-for-recently-played ()
(let ((channel (get-current-channel)) (let ((channel (get-current-channel))
(quality (get-current-quality))) (quality (get-current-quality)))
(if (= channel "shuffle") (cond
"asteroid-shuffle.mp3" ((= quality "low") "asteroid.mp3")
(cond ((= quality "mp3") "asteroid.mp3")
((= quality "low") "asteroid-low.mp3") (t "asteroid.aac"))))
((= quality "mp3") "asteroid.mp3")
(t "asteroid.aac")))))
;; Update recently played tracks display ;; Update recently played tracks display
(defun update-recently-played () (defun update-recently-played ()
@ -43,7 +41,7 @@
(then (lambda (result) (then (lambda (result)
;; Radiance wraps API responses in a data envelope ;; Radiance wraps API responses in a data envelope
(let ((data (or (ps:@ result data) result))) (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)
(> (ps:@ data tracks length) 0)) (> (ps:@ data tracks length) 0))
(let ((list-el (ps:chain document (get-element-by-id "recently-played-list")))) (let ((list-el (ps:chain document (get-element-by-id "recently-played-list"))))

View File

@ -82,8 +82,7 @@
(cl-streamer/harmony:pipeline-current-track *harmony-pipeline*)) (cl-streamer/harmony:pipeline-current-track *harmony-pipeline*))
(let* ((track-info (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")) (display-title (or (getf track-info :display-title) "Unknown"))
(listeners (cl-streamer:get-listener-count (listeners (cl-streamer:get-listener-count))
(format nil "/~A" mount)))
(track-id (or (find-track-by-title display-title) (track-id (or (find-track-by-title display-title)
(find-track-by-file-path (getf track-info :file))))) (find-track-by-file-path (getf track-info :file)))))
`((:listenurl . ,(format nil "~A/~A" *stream-base-url* mount)) `((:listenurl . ,(format nil "~A/~A" *stream-base-url* mount))