Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 31st, 2012  |  syntax: None  |  size: 0.72 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. (ns onelouder.core
  2.   (:import [org.jaudiotagger.audio AudioFileIO]
  3.            [org.jaudiotagger.tag FieldKey]))
  4.  
  5. (defn tags [file]
  6.   (let [fields (apply conj {} (map (fn [n] [(keyword (. (. n toString) toLowerCase)) n]) (. FieldKey values)))
  7.         tag (. file (getTag))]
  8.     (apply conj {}
  9.            (filter (fn [[name val]] (and val (not (empty? val))))
  10.                    (map (fn [[name val]]
  11.                           [name (seq (map #(. % getContent) (. tag (getFields val))))])
  12.                         fields)))))
  13.  
  14. (defn audioheader [file]
  15.   (bean (. file (getAudioHeader))))
  16.  
  17. (defn metadata [filename]
  18.   (let [file (AudioFileIO/read (new java.io.File filename))]
  19.     {:tags (tags file)
  20.      :audioheader (audioheader file)}))