Created
November 25, 2015 16:10
-
-
Save johnbintz/7fc4970a2f5af8aa0c08 to your computer and use it in GitHub Desktop.
Go back to the early 2000s and make a DVD of videos!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#_(defdeps [[org.clojure/clojure "1.7.0"] | |
[org.clojure/data.xml "0.0.8"]]) | |
(ns create-xml | |
(:require [clojure.string :as str]) | |
(:use [clojure.data.xml])) | |
(def directory (clojure.java.io/file ".")) | |
(defn get-extension [file] | |
(last (str/split (.getAbsolutePath file) #"\."))) | |
(defn get-number-from-entire-string [string] | |
(let [matcher (re-matcher #"^[0-9]+$" string) | |
result (re-find matcher)] | |
(if result | |
(Integer/parseInt result) | |
false))) | |
(defn get-episode-number [filename] | |
(->> (str/split filename #" ") | |
(map get-number-from-entire-string) | |
(filter #(not (false? %))) | |
first)) | |
(defn get-episode-number-for-file [file] | |
(get-episode-number (.getAbsolutePath file))) | |
(defn is-mpg? [file] | |
(= (get-extension file) "mpg")) | |
(defn read-videos [] | |
(->> directory | |
file-seq | |
(filter is-mpg?) | |
(sort #(- (get-episode-number-for-file %1) | |
(get-episode-number-for-file %2))))) | |
(defn create-vob [file] | |
[:vob {:file (.toString file)}]) | |
(defn create-vob-structure [] | |
[:dvdauthor {:dest "dvd"} | |
[:vmgm] | |
[:titleset | |
[:titles | |
[:pgc | |
(map create-vob (read-videos)) | |
[:post "jump chapter 1;"] | |
]]]]) | |
(defn create-xml [] | |
(emit-str (sexp-as-element (create-vob-structure)))) | |
(defn write-xml [] | |
(spit "dvdauthor.xml" (create-xml))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment