
Untitled
By: a guest on
Jul 31st, 2012 | syntax:
None | size: 0.72 KB | hits: 12 | expires: Never
(ns onelouder.core
(:import [org.jaudiotagger.audio AudioFileIO]
[org.jaudiotagger.tag FieldKey]))
(defn tags [file]
(let [fields (apply conj {} (map (fn [n] [(keyword (. (. n toString) toLowerCase)) n]) (. FieldKey values)))
tag (. file (getTag))]
(apply conj {}
(filter (fn [[name val]] (and val (not (empty? val))))
(map (fn [[name val]]
[name (seq (map #(. % getContent) (. tag (getFields val))))])
fields)))))
(defn audioheader [file]
(bean (. file (getAudioHeader))))
(defn metadata [filename]
(let [file (AudioFileIO/read (new java.io.File filename))]
{:tags (tags file)
:audioheader (audioheader file)}))