]> code.delx.au - transcoding/blobdiff - batch-run
avconv -> ffmpeg
[transcoding] / batch-run
index 43af53183157319e5035e61cf8199a77169c17b1..5290dc840c754515ce400bfcefe38ff48e709913 100755 (executable)
--- a/batch-run
+++ b/batch-run
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python
 
 import itertools
 import optparse
@@ -10,7 +10,7 @@ import time
 
 
 def run(running_jobs, cmd):
-    p = subprocess.Popen(cmd, stdin=file(os.devnull, 'r'))
+    p = subprocess.Popen(cmd, stdin=subprocess.DEVNULL)
     running_jobs.append(p)
 
 def wait_for_completion(max_jobs, running_jobs):
@@ -60,6 +60,14 @@ def batch_process(opts, lines):
     # Wait for remaining jobs to finish
     wait_for_completion(1, running_jobs)
 
+def make_and_chdir(filename):
+    dirname = os.path.splitext(filename)[0] + ".out"
+    try:
+        os.makedirs(dirname)
+    except FileExistsError:
+        pass
+    os.chdir(dirname)
+
 def parse_args():
     parser = optparse.OptionParser(usage="%prog batchfile1 [batchfile2] ...")
     parser.add_option("-j", "--jobs",
@@ -67,12 +75,17 @@ def parse_args():
         help="The number of concurrent jobs to run")
     opts, args = parser.parse_args(sys.argv[1:])
     opts.running_jobs = []
+    args = map(os.path.abspath, args)
     return opts, args
 
 def main():
     opts, args = parse_args()
-    for name in args:
-        batch_process(opts, parse_file(open(name)))
+    filenames = list(map(os.path.abspath, args))
+    for filename in filenames:
+        print("Processing", filename)
+        make_and_chdir(filename)
+        with open(filename) as fd:
+            batch_process(opts, parse_file(fd))
 
 if __name__ == "__main__":
     main()