diff options
author | Tom Willemse | 2014-08-21 00:23:56 +0200 |
---|---|---|
committer | Tom Willemse | 2014-08-21 00:23:56 +0200 |
commit | c2778f0f713cc885087d6302196e421596ff248e (patch) | |
tree | f289c9e52bcaa6dd1ef7b64343df78492a36141d /emacs/.emacs.d/site-lisp/metalexpress.el | |
parent | 05415b9b2c455fb5e5f2521610b9d7dd33385d21 (diff) | |
download | dotfiles-c2778f0f713cc885087d6302196e421596ff248e.tar.gz dotfiles-c2778f0f713cc885087d6302196e421596ff248e.zip |
Add Emacs config
Diffstat (limited to 'emacs/.emacs.d/site-lisp/metalexpress.el')
-rw-r--r-- | emacs/.emacs.d/site-lisp/metalexpress.el | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/emacs/.emacs.d/site-lisp/metalexpress.el b/emacs/.emacs.d/site-lisp/metalexpress.el new file mode 100644 index 0000000..619e4e3 --- /dev/null +++ b/emacs/.emacs.d/site-lisp/metalexpress.el @@ -0,0 +1,80 @@ +;;; metalexpress.el --- Listen to Metal Express Radio + +;; Copyright (C) 2012 Tom Willemse + +;; Author: Tom Willemse <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)) + (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 |