Skip to content

Instantly share code, notes, and snippets.

@tjennings
Created December 11, 2009 19:02
Show Gist options
  • Save tjennings/254418 to your computer and use it in GitHub Desktop.
Save tjennings/254418 to your computer and use it in GitHub Desktop.
(require ['clojure.contrib.shell-out :as 'shell])
(def dir (second *command-line-args*))
(defn as-seq [string] (seq (.split string "\n")))
(defn find-by-name [d n] (as-seq (shell/sh "find" "." "-name" n :dir d)))
(defn oggs [] (find-by-name dir "*.ogg"))
(defn base-name [fname] (.replaceFirst fname "\\..{3}$" ""))
(defn wav-file [fname] (str (base-name fname) ".wav"))
(defn mp3-file [fname] (str (base-name fname) ".mp3"))
(defn decode [file]
(let [out-file (wav-file file)]
(shell/sh "oggdec" "-Q" "-o" out-file file)
(println "Decoded " file " to " out-file)))
(defn encode [file] ()
(let [out-file (mp3-file file)]
(shell/sh "lame" "--silent" "--vbr-new" file out-file)
(println "Encoded" file " to " out-file)))
(defn process-file [file]
(decode file)
(encode (str (base-name file) ".wav")))
(defn process-files [files]
(dorun (pmap process-file files)))
(process-files (oggs))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment