X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=elisp.git;a=blobdiff_plain;f=media-mplayer.el;h=ff1747e3337097ec60f8a2a455db7e4c5f772276;hp=5b00526dae72af7d3c6f362feff31633d975fba3;hb=41d67536a6418bc1b6259cc3f390b892cb931417;hpb=460fef0fee109c5348b01f195dbd9b460153212f diff --git a/media-mplayer.el b/media-mplayer.el index 5b00526..ff1747e 100644 --- a/media-mplayer.el +++ b/media-mplayer.el @@ -72,6 +72,9 @@ load Emacs less. Nil means no timing." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(setq media/mplayer/protocol-regexp + "^\\(AUDIO:\\|Exiting...\\|Starting\\|ANS_LENGTH\\|ANS_TIME_POSITION\\|Cache fill:\\|ICY Info:\\) *\\(.*\\)$") + (defun media/mplayer/filter-subfunctions (cmd param) ;; (unless (string= cmd "A:") ;; (message "cmd=%s param=%s" cmd param) @@ -82,9 +85,6 @@ load Emacs less. Nil means no timing." (assoc cmd '( - - ;; ---------------------------------------- - ("ICY Info:" ;; (message "ICY Info \"%s\"" param) @@ -103,10 +103,17 @@ load Emacs less. Nil means no timing." ) ) + ;; If we did not parse it properly, reset the + ;; song name, and display the ICY string raw (setq media/current-song-in-stream nil) + (message "ICY Info \"%s\"" param) + ) - ;; If we did not parse it properly, show it - (message "ICY Info \"%s\"" param)) + (when media/mplayer/capture-dir + (with-temp-buffer + (insert + (concat media/current-song-in-stream "\n")) + (write-region nil nil (concat media/mplayer/capture-dir "/log") t))) (if (and media/current-song-in-stream media/current-information) (media/show-current-information)) @@ -162,7 +169,10 @@ load Emacs less. Nil means no timing." ("Starting" (media/mplayer/write "get_time_length\n") - (if media/mplayer/capture-dir (media/mplayer/write "capturing\n")) + (when media/mplayer/capture-dir + (media/mplayer/write "capturing\n") + ;; (message "Capturing stream in %s" media/mplayer/capture-dir) + ) ) ;; ---------------------------------------- @@ -205,7 +215,7 @@ load Emacs less. Nil means no timing." (string-match "\\(.*\\)[\n ]+" media/mplayer/buffer start)) (setq start (1+ (match-end 1))) (let ((line (match-string 1 media/mplayer/buffer))) - (when (string-match "^\\(AUDIO:\\|Exiting...\\|Starting\\|ANS_LENGTH\\|ANS_TIME_POSITION\\|Cache fill:\\|ICY Info:\\) *\\(.*\\)$" line) + (when (string-match media/mplayer/protocol-regexp line) (media/mplayer/filter-subfunctions (match-string 1 line) (match-string 2 line)))) ) (setq media/mplayer/buffer (substring media/mplayer/buffer start))) @@ -249,7 +259,8 @@ load Emacs less. Nil means no timing." media/song-current-time nil media/mplayer/cumulated-duration 0 media/mplayer/last-current-time nil - )) + ) +) (defun media/api/cleanup () "Called when killing the application's buffer" (when media/mplayer/process @@ -274,14 +285,15 @@ load Emacs less. Nil means no timing." '("mplayer" nil "mplayer" "-slave" "-quiet") media/mplayer/args (when (string-match "\\(asx\\|m3u\\|pls\\|ram\\)$" media/mplayer/url) - (if media/mplayer/capture-dir (list "-dumpfile" - (concat media/mplayer/capture-dir - "/" - (replace-regexp-in-string "[^a-zA-Z0-9\.]" "_" media/mplayer/url) - (format-time-string "-%Y-%m-%d-%H:%M:%S")) - "-capture" - "-playlist" - ) + (if media/mplayer/capture-dir + (list "-dumpfile" + (concat media/mplayer/capture-dir + "/" + (replace-regexp-in-string "[^a-zA-Z0-9\.]" "_" media/mplayer/url) + (format-time-string "-%Y-%m-%d-%H:%M:%S")) + "-capture" + "-playlist" + ) (list "-playlist")) ) (list (replace-regexp-in-string "^file://" "" media/mplayer/url)))