Skip to content

Instantly share code, notes, and snippets.

@yogthos
Last active March 19, 2020 21:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yogthos/75afe61eb490344b9dc84de4f82d88ba to your computer and use it in GitHub Desktop.
Save yogthos/75afe61eb490344b9dc84de4f82d88ba to your computer and use it in GitHub Desktop.
#!/usr/bin/env bb
(require '[clojure.java.shell :refer [sh]])
(defn exit [error]
(println error)
(System/exit 1))
(defn open-folder [folder]
(let [folder (some-> folder (io/file))]
(when (nil? folder)
(exit "usage: shufle-play.clj <music folder>"))
(when-not (.exists folder)
(exit (str "music folder not found:" (.getName folder))))
folder))
(defn play-mp3s
([mp3s]
(play-mp3s (shuffle mp3s) []))
([[mp3 & more] played]
(if mp3
(do
(println "playing" (.getName mp3))
(sh "ffplay" "-nodisp" "-autoexit" (.getAbsolutePath mp3))
(recur more (conj played mp3)))
(recur (shuffle played) []))))
(->> (first *command-line-args*)
(open-folder)
(file-seq)
(rest)
(filter #(.endsWith (.getName %) ".mp3"))
(play-mp3s))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment