Tom Willemsen
a281f040cd
Since it's no longer placed directly in the home directory it doesn't need to be named exacly the same.
80 lines
2.7 KiB
EmacsLisp
80 lines
2.7 KiB
EmacsLisp
;;; metalexpress.el --- Listen to Metal Express Radio
|
|
|
|
;; Copyright (C) 2012 Tom Willemsen
|
|
|
|
;; Author: Tom Willemsen <thomas@aethon.nl>
|
|
;; Keywords: multimedia
|
|
|
|
;; This program is free software; you can redistribute it and/or modify
|
|
;; it under the terms of the GNU General Public License as published by
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
;; (at your option) any later version.
|
|
|
|
;; This program is distributed in the hope that it will be useful,
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
;; GNU General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
;;; Commentary:
|
|
|
|
;; Functions for easily listening to Metal Express Radio.
|
|
|
|
;;; Code:
|
|
|
|
(defgroup metal-express-radio nil
|
|
"Group for the Metal Express Radio listening functions."
|
|
:group 'multimedia)
|
|
|
|
(defcustom metal-express-radio-playlist-url
|
|
"http://usa7-vn.mixstream.net/listen/8248.m3u"
|
|
"The URL of the Metal Express Radio stream."
|
|
:group 'metal-express-radio
|
|
:type 'string)
|
|
|
|
(defcustom metal-express-radio-song-changed-hook nil
|
|
"Hook run when the currently playing song changes."
|
|
:type 'hook
|
|
:group 'metal-express-radio)
|
|
|
|
(defvar metal-express-radio-currently-playing nil
|
|
"The currently playing song.")
|
|
|
|
(defun mer-proc-filter (proc string)
|
|
(when (string-match "^ICY Info: StreamTitle='\\(.*\\)';StreamUrl='';"
|
|
string)
|
|
(setq metal-express-radio-currently-playing (match-string 1 string))
|
|
(apply 'run-hooks metal-express-radio-song-changed-hook)))
|
|
|
|
(defun metal-express-radio-echo-currently-playing ()
|
|
(interactive)
|
|
(message metal-express-radio-currently-playing))
|
|
|
|
(defun metal-express-radio-notify ()
|
|
(interactive)
|
|
(notifications-notify :title "Now playing:"
|
|
:body metal-express-radio-currently-playing))
|
|
|
|
;;;###autoload
|
|
(defun metal-express-radio-start ()
|
|
"Start listening to Metal Express Radio."
|
|
(interactive)
|
|
(let ((proc (start-process "metalexpress" "*Metal Express Radio*"
|
|
"mplayer" metal-express-radio-playlist-url)))
|
|
(set-process-filter proc #'mer-proc-filter)))
|
|
|
|
(defun metal-express-radio-stop ()
|
|
"Stop listening to Metal Express Radio."
|
|
(interactive)
|
|
(kill-process (get-buffer-process "*Metal Express Radio*"))
|
|
(setq metal-express-radio-currently-playing nil))
|
|
|
|
(add-hook 'metal-express-radio-song-changed-hook
|
|
'metal-express-radio-echo-currently-playing)
|
|
(add-hook 'metal-express-radio-song-changed-hook
|
|
'metal-express-radio-notify)
|
|
|
|
(provide 'metalexpress)
|
|
;;; metalexpress.el ends here
|