Update.
[elisp.git] / media-mplayer.el
index 5b00526..46acbb3 100644 (file)
@@ -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)
 
@@ -94,8 +94,8 @@ load Emacs less. Nil means no timing."
                               (let ((s (match-string 1 param)))
                                 (concat (if (string= s "")
                                             "<no title>"
-                                          ;; (encode-coding-string s 'latin-1)
-                                          s
+                                          (encode-coding-string s 'latin-1)
+                                          ;; s
                                           )
                                         " | "
                                         (format-time-string "%a %b %d %H:%M:%S")
@@ -103,10 +103,18 @@ 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
+                      (let ((coding-system-for-write 'raw-text-unix))
+                        (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 +170,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 +216,7 @@ load Emacs less. Nil means no timing."
                 (string-match "\\(.*\\)[\n\r]+" 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 +260,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 +286,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)))