;;;; vim: set fenc=utf-8 lisp ic wm=0 et tw=0 sm para=lpppipnpbp sect=shuh ai : ;;;; --------------------------------------------------------------------------- ;;;; FILE IDENTIFICATION ;;;; ;;;; Name: mpd-shebang.lisp ;;;; Purpose: An mpd status printing shebang script. ;;;; Author: Stephen P. Horner ;;;; Started: 2006-08-12 ;;;; ;;;; $Id:$ ;;;; ;;;; This file is Copyright © 2006 by Stephen P. Horner ;;;; ;;;; --------------------------------------------------------------------------- (declaim (optimize (speed 1) (space 1) (safety 1) (debug 3) (compilation-speed 3))) #-sbcl (error "This script will only work with 'CL-MPD ASDF-INSTALLED, and only on SBCL.") ;;; Muffle compiler-notes globally (eval-when (:compile-toplevel :load-toplevel :execute) (declaim (sb-ext:muffle-conditions sb-ext:compiler-note))) (require 'asdf) (asdf:operate 'asdf:load-op 'mpd :verbose nil) (in-package #:mpd) (defun mpd-client (&key (bitrate nil)) (let ((client (make-instance 'mpd-client)) (status (make-instance 'mpd-status)) (song (make-instance 'mpd-song))) (with-mpd-client-slots (client) (mpd-update-song client song) (with-mpd-song-slots (song) (if (stringp composer) (format *standard-output* "MPD is playing \"~:[~;~:*~A~]\" by \"~:[~;~:*~A~]\" from the album \"~:[~;~:*~A~]\" composed by \"~:[~;~:*~A~]\" " title artist album composer) (format *standard-output* "MPD is playing \"~:[~;~:*~A~]\" by \"~:[~;~:*~A~]\" from the album \"~:[~;~:*~A~]\" " title artist album)) (when (>= bitrate 1) (dotimes (i bitrate) (mpd-update-status client status) (let ((cbr (mpd-status-bitrate status))) (format t "~%@ ~A kbps~%" cbr)))) (mpd-client-disconnect client))))) (progn (sb-ext:disable-debugger) (mpd-client :bitrate 1) (sb-ext:quit)) ;;; EOF