rendered paste body#!/usr/bin/gosh
;; This software is in the public domain and is
;; provided with absolutely no warranty.
(use file.util)
(use srfi-1)
(use srfi-11)
(use gauche.process)
(define *media-types*
'("flac" "ape" "cue" "wv" "wav" "m4a"))
(define (media-file? file-name)
(member (path-extension file-name) *media-types*))
(define (partition-cue files)
(partition
(lambda (f) (equal? (path-extension f) "cue"))
files))
(define (process-files files output-dir)
(let-values (((cue files) (partition-cue files)))
(recode files output-dir cue)))
(define (oggenc-args output-dir)
(format #f "cust ext=ogg oggenc -q9 -o ~a/%f -" output-dir))
(define (recode files output-dir cue)
(run-process
`(shntool ,@(if (and (= (length files) 1) (list? cue))
`(split -t %n_%t -f ,(car cue))
'(conv))
-q -o ,(oggenc-args output-dir)
,@files) :wait #t))
(define (second list)
(if (< (length list) 2)
#f
(cadr list)))
(define (main args)
(process-files
(directory-list (current-directory)
:children? #t :filter media-file?)
(or (second args) "out"))
0)