aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emms-default.el5
-rw-r--r--emms-info-ogginfo.el64
-rw-r--r--emms-playlist-mode.el5
3 files changed, 67 insertions, 7 deletions
diff --git a/emms-default.el b/emms-default.el
index 4747a6a..7de7dde 100644
--- a/emms-default.el
+++ b/emms-default.el
@@ -73,9 +73,8 @@ always work, unless you get very unlucky with a CVS-build."
(add-to-list 'emms-track-initialize-functions 'emms-info-initialize-track)
(require 'emms-info-mp3info)
(add-to-list 'emms-info-functions 'emms-info-mp3info)
- (ignore-errors
- (require 'emms-info-ogg)
- (add-to-list 'emms-info-functions 'emms-info-ogg))
+ (require 'emms-info-ogginfo)
+ (add-to-list 'emms-info-functions 'emms-info-ogginfo)
;; setup info
(setq emms-track-description-function 'emms-info-track-description)
diff --git a/emms-info-ogginfo.el b/emms-info-ogginfo.el
new file mode 100644
index 0000000..14c551e
--- /dev/null
+++ b/emms-info-ogginfo.el
@@ -0,0 +1,64 @@
+;;; emms-info-ogginfo.el --- Emms information from Ogg Vorbis files.
+
+;;; Copyright 2005, Yoni Rabkin under the GNU General Public License.
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(defgroup emms-info-ogginfo nil
+ "An EMMS-info method for getting, using the external ogginfo
+program"
+ :group 'emms-info)
+
+(defcustom emms-info-ogginfo-coding-system 'latin-1
+ "*Coding system used in the output of ogginfo."
+ :type 'coding-system
+ :group 'emms-info-ogginfo)
+
+(defcustom emms-info-ogginfo-program-name "ogginfo"
+ "*The name/path of the ogginfo tag program."
+ :type 'string
+ :group 'emms-info-ogginfo)
+
+(defun emms-info-ogginfo (track)
+ "Add track information to TRACK.
+This is a useful element for `emms-info-functions'."
+ (when (and (eq 'file (emms-track-type track))
+ (string-match "\\.[Oo][Gg][Gg]\\'" (emms-track-name track)))
+
+ (with-temp-buffer
+ (when (zerop
+ (call-process emms-info-ogginfo-program-name
+ nil t nil (emms-track-name track)))
+
+ ;; play time, emms-info-ogg.el [U. Jensen]
+ (goto-char (point-min))
+ (re-search-forward "Playback length: \\([0-9]*\\)m:\\([0-9]*\\)")
+ (let ((minutes (string-to-int (match-string 1)))
+ (seconds (string-to-int (match-string 2))))
+ (setq ptime-total (+ (* minutes 60) seconds)
+ ptime-min minutes
+ ptime-sec seconds))
+ (emms-track-set track 'info-playing-time ptime-total)
+ (emms-track-set track 'info-playing-time-min ptime-min)
+ (emms-track-set track 'info-playing-time-sec ptime-sec)
+ (emms-track-set track 'info-file (emms-track-name track))
+
+ ;; all the rest of the info available
+ (goto-char (point-min))
+ (when (re-search-forward "User comments section follows..." (point-max) t)
+ (while (zerop (forward-line 1))
+ (when (looking-at "^\t\\(.*\\)=\\(.*\\)$")
+ (let ((a (match-string 1))
+ (b (match-string 2)))
+ (when (and (< 0 (length a))
+ (< 0 (length b)))
+ (emms-track-set track
+ (intern (downcase (concat "info-" (match-string 1))))
+ (match-string 2)))))))))))
+
+(provide 'emms-info-ogginfo)
+
+;;; emms-info-ogginfo.el ends here
diff --git a/emms-playlist-mode.el b/emms-playlist-mode.el
index 21aa337..440cbec 100644
--- a/emms-playlist-mode.el
+++ b/emms-playlist-mode.el
@@ -13,10 +13,7 @@
;;;
;;; Feature requests:
;;;
-;;; (1) Lukhas wants `emms-list-playlist-buffers' to list all the
-;;; playlist buffers.
-;;;
-;;; (2) Arbitrary comment entry with color overlays.
+;;; (1) Arbitrary comment entry with color overlays.
;;; Code: