diff options
author | lucas <lucas> | 2005-09-12 17:23:00 +0000 |
---|---|---|
committer | lucas <mwolson@gnu.org> | 2005-09-12 17:23:00 +0000 |
commit | 4ab7c61701b9eb1bac0d75207fdcf8bbe17dbec2 (patch) | |
tree | eb4da71a48a3ec53c5aebbb52414d7800b015887 | |
parent | 731479aad60f6d75e3371503b3ccc0c29496dbd6 (diff) |
First attempt at reading playing time for .ogg
Problem : it's a bit long to read the info now.
We need to optimize that.
darcs-hash:20050912172312-4f952-73cffb3445ed251fd8cb7e5d691f7c95a676bda0.gz
-rw-r--r-- | emms-info-ogg.el | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/emms-info-ogg.el b/emms-info-ogg.el index b284df6..ca3059f 100644 --- a/emms-info-ogg.el +++ b/emms-info-ogg.el @@ -56,25 +56,40 @@ ogg-comments.el" (defun emms-info-ogg-comment-providep (track) "Return non-nil if this info-method provides info for the track." (if (and track (emms-track-name track) - (string-match "\\.ogg$" (emms-track-name track))) + (string-match "\\.ogg$" (emms-track-name track))) t nil)) (defun emms-info-ogg-get-comment (field info) (let ((comment (cadr (assoc field (cadr info))))) (if comment - comment + comment ""))) + (defun emms-info-ogg-comment-get (track) "Retrieve an emms-info strucutre as an ogg-comment" - (let ((info (oggc-read-header (emms-track-name track)))) + (let ((info (oggc-read-header (emms-track-name track))) + (file (emms-track-get track 'name))) + (with-temp-buffer + (call-process "ogginfo" nil t nil file) + (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))) + (make-emms-info :title (emms-info-ogg-get-comment "title" info) :artist (emms-info-ogg-get-comment "artist" info) :album (emms-info-ogg-get-comment "album" info) :note (emms-info-ogg-get-comment "comment" info) :year (emms-info-ogg-get-comment "date" info) :genre (emms-info-ogg-get-comment "genre" info) + :playing-time ptime-total + :playing-time-min ptime-min + :playing-time-sec ptime-sec :file (emms-track-name track)))) (provide 'emms-info-ogg) |