emacs/lisp/+bongo.el

61 lines
1.7 KiB
EmacsLisp
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; +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