61 lines
1.7 KiB
EmacsLisp
61 lines
1.7 KiB
EmacsLisp
;;; +bongo.el --- customizations in bongo -*- lexical-binding: t; -*-
|
||
|
||
;;; Commentary:
|
||
|
||
;;; Code:
|
||
|
||
(defgroup +bongo nil
|
||
"Extra customization for `bongo'."
|
||
:group 'bongo)
|
||
|
||
(defun +bongo-notify ()
|
||
(notifications-notify
|
||
:title "Now Playing"
|
||
:body (let ((bongo-field-separator "
|
||
"))
|
||
(substring-no-properties (bongo-formatted-infoset)))
|
||
: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
|