From 801ee6ec245a8a2fffdd81f256eab750634306fc Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Mon, 7 Feb 2022 17:09:32 -0600 Subject: Add +bongo-radio --- lisp/+bongo.el | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'lisp/+bongo.el') diff --git a/lisp/+bongo.el b/lisp/+bongo.el index d1a2ef4..da68024 100644 --- a/lisp/+bongo.el +++ b/lisp/+bongo.el @@ -4,6 +4,10 @@ ;;; Code: +(defgroup +bongo nil + "Extra customization for `bongo'." + :group 'bongo) + (defun +bongo-notify () (notifications-notify :title "Now Playing" @@ -13,5 +17,44 @@ :urgency 'low :transient t)) +(defun +bongo-stop-all () + "Ensure only one bongo playlist is playing at a time. +This is intended to be :before advice to `bongo-play'." + (mapc (lambda (b) + (with-current-buffer b + (when-let* ((modep (derived-mode-p + 'bongo-playlist-mode)) + (bongo-playlist-buffer b) + (playingp (bongo-playing-p))) + (bongo-stop)))) + (buffer-list))) + + +;;; Bongo Radio + +(defcustom +bongo-radio-stations nil + "Stations to play using `+bongo-radio'.") + +(defcustom +bongo-radio-buffer-name "*Bongo Radio*" + "Name of the buffer that holds all bongo radio stations." + :type 'string) + +(defun +bongo-radio () + (interactive) + (switch-to-buffer (or (get-buffer +bongo-radio-buffer-name) + (+bongo-radio-init)))) + +(defun +bongo-radio-init () + (interactive) + (let ((bongo-playlist-buffer (get-buffer-create +bongo-radio-buffer-name)) + (bongo-confirm-flush-playlist nil)) + (with-bongo-playlist-buffer + (bongo-playlist-mode) + (bongo-flush-playlist :delete-all) + (cl-loop for (name . url) in +bongo-radio-stations + do (bongo-insert-uri url name))) + (prog1 (switch-to-buffer bongo-playlist-buffer) + (goto-char (point-min))))) + (provide '+bongo) ;;; +bongo.el ends here -- cgit 1.4.1-21-gabe81