Add +bongo-radio
This commit is contained in:
parent
e8bcf53e55
commit
801ee6ec24
67
init.el
67
init.el
|
@ -792,22 +792,69 @@ They are completed by \"M-x TAB\" only in Tramp debug buffers."
|
|||
:host github
|
||||
:repo "dbrock/bongo"))
|
||||
(:also-load +bongo)
|
||||
(:option bongo-default-directory "~/var/music")
|
||||
(:option bongo-default-directory "~/var/music"
|
||||
bongo-custom-backend-matchers '((mpv . (("https:") . t)))
|
||||
+bongo-radio-stations ; use `+bongo-radio' for these
|
||||
`(;; Local radio
|
||||
("KLSU"
|
||||
. "http://130.39.238.143:8010/stream.mp3")
|
||||
("WRKF: NPR for the Capital Region"
|
||||
. ,(concat "https://playerservices.streamtheworld.com/api/"
|
||||
"livestream-redirect/WRKFFM.mp3"))
|
||||
("WRKF HD-2"
|
||||
. ,(concat "https://playerservices.streamtheworld.com/api/"
|
||||
"livestream-redirect/WRKFHD2.mp3"))
|
||||
("WBRH: Jazz & More"
|
||||
. "http://wbrh.streamguys1.com/wbrh-mp3")
|
||||
("KBRH Blues & Rhythm Hits"
|
||||
. "http://wbrh.streamguys1.com/kbrh-mp3")
|
||||
;; Soma FM
|
||||
("Soma FM Synphaera"
|
||||
. "https://somafm.com/synphaera256.pls")
|
||||
("SomaFM BAGel Radio"
|
||||
. "https://somafm.com/bagel.pls")
|
||||
("SomaFM Boot Liquor"
|
||||
. "https://somafm.com/bootliquor320.pls")
|
||||
("SomaFM Deep Space One"
|
||||
. "https://somafm.com/deepspaceone.pls")
|
||||
("SomaFM Fluid"
|
||||
. "https://somafm.com/fluid.pls")
|
||||
("SomaFM Underground 80s"
|
||||
. "https://somafm.com/u80s256.pls")
|
||||
;; Tildeverse & Friends
|
||||
("tilderadio"
|
||||
. "https://azuracast.tilderadio.org/radio/8000/radio.ogg")
|
||||
("vantaradio"
|
||||
. "https://vantaa.black/radio")
|
||||
;; Other online radio
|
||||
("BadRadio: 24/7 PHONK"
|
||||
. "https://s2.radio.co/s2b2b68744/listen")
|
||||
("Cafe - lainon.life"
|
||||
. "https://lainon.life/radio/cafe.ogg.m3u")
|
||||
("Everything - lainon.life"
|
||||
. "https://lainon.life/radio/everything.ogg.m3u")
|
||||
("Swing - lainon.life"
|
||||
. "https://lainon.life/radio/swing.ogg.m3u")
|
||||
("Cyberia - lainon.life"
|
||||
. "https://lainon.life/radio/cyberia.ogg.m3u")
|
||||
("Nightwave Plaza - Online Vaporwave Radio"
|
||||
. "http://radio.plaza.one/opus")))
|
||||
(advice-add 'bongo-play :before #'+bongo-stop-all)
|
||||
(with-eval-after-load 'notifications
|
||||
(add-hook 'bongo-player-metadata-changed-hook #'+bongo-notify)))
|
||||
|
||||
(setup (:straight (cape
|
||||
:host github :repo "minad/cape"))
|
||||
(dolist (fn
|
||||
;; All available cape capfs listed here. Add them to the front since
|
||||
;; they're reversed with `add-to-list'.
|
||||
'(cape-file
|
||||
cape-dabbrev
|
||||
cape-keyword
|
||||
cape-abbrev
|
||||
cape-ispell
|
||||
;;cape-dict
|
||||
))
|
||||
;; All available cape capfs listed here. Add them to the front since
|
||||
;; they're reversed with `add-to-list'.
|
||||
'(cape-file
|
||||
cape-dabbrev
|
||||
cape-keyword
|
||||
cape-abbrev
|
||||
cape-ispell
|
||||
;;cape-dict
|
||||
))
|
||||
(add-to-list 'completion-at-point-functions fn :append)))))
|
||||
|
||||
(setup (:straight circe)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -65,8 +65,14 @@
|
|||
|
||||
(defun +tab-bar-bongo ()
|
||||
"Display Bongo now playing information."
|
||||
(when (and bongo-mode-line-indicator-mode
|
||||
(bongo-playing-p))
|
||||
(when-let ((modep bongo-mode-line-indicator-mode)
|
||||
(buf (cl-some (lambda (b)
|
||||
(with-current-buffer b
|
||||
(when-let* ((modep (derived-mode-p 'bongo-playlist-mode))
|
||||
(bongo-playlist-buffer b)
|
||||
(playingp (bongo-playing-p)))
|
||||
b)))
|
||||
(buffer-list))))
|
||||
`((bongo-now-playing menu-item
|
||||
,(concat "{"
|
||||
(let ((bongo-field-separator ""))
|
||||
|
@ -76,7 +82,19 @@
|
|||
(bongo-formatted-infoset))
|
||||
(- +tab-bar-emms-max-length 2)))
|
||||
"}")
|
||||
bongo-pause/resume
|
||||
(lambda () (interactive)
|
||||
(let ((bongo-playlist-buffer
|
||||
;; XXX: I'm sure this is terribly inefficient
|
||||
(cl-some (lambda (b)
|
||||
(with-current-buffer b
|
||||
(when-let* ((modep (derived-mode-p
|
||||
'bongo-playlist-mode))
|
||||
(bongo-playlist-buffer b)
|
||||
(playingp (bongo-playing-p)))
|
||||
b)))
|
||||
(buffer-list))))
|
||||
(with-bongo-playlist-buffer
|
||||
(bongo-pause/resume))))
|
||||
:help ,(funcall bongo-header-line-function)))))
|
||||
|
||||
(defvar +tab-bar-show-original nil
|
||||
|
|
Loading…
Reference in New Issue