]> diplodocus.org Git - flac-archive/blobdiff - fa-flacd
hack out my ancient shitty util library
[flac-archive] / fa-flacd
index 7e13bd973f99d3d6153ce614ac0bd5a90f6ccefd..8166b945b2845101bc9cd4e0ad8b0a9e0f1f2159 100755 (executable)
--- a/fa-flacd
+++ b/fa-flacd
@@ -85,13 +85,20 @@ from errno import EEXIST, ENOENT
 from glob import glob
 from optparse import OptionParser
 
-import org.diplodocus.jobs
-from org.diplodocus.structures import ListDictDict
-from org.diplodocus.util import die, flatten, nothing
-from org.diplodocus.util import catch_EnvironmentError as c
-
 from flac_archive.tags import Tags
 
+def c(f, *args):
+    try:
+        return f(*args)
+    except EnvironmentError, error:
+        error.msg = '%s.%s(%s): ' % (f.__module__, f.__name__,
+                                     ', '.join(map(str, args)))
+        raise
+
+def die(e, *args):
+    sys.stderr.write(''.join(args))
+    sys.exit(e)
+
 def spew(*args):
     if verbose:
         for i in args:
@@ -126,7 +133,11 @@ def flac(dir, tracknum, tags):
     flac files represent individual tracks or whole discs."""
 
     separator = ' '
-    artist = (tags.gets('ARTIST', separator=', ') or '').replace('/', '_')
+    if len(tags.get('ALBUMARTIST')) > 0:
+        artist_tag = tags.gets('ALBUMARTIST', separator=', ')
+    else:
+        artist_tag = tags.gets('ARTIST', separator=', ')
+    artist = (artist_tag or '').replace('/', '_')
     album = (tags.gets('ALBUM', separator=separator) or '').replace('/', '_')
     discnum = tags.gets('DISCNUMBER')
 
@@ -279,11 +290,8 @@ def flacloop(maxjobs):
                     return 1
             return lamb
 
-    def notify_start(pid, jobs):
-        # make this print '2 jobs; start 378 for Artist/01 Title.flac'
-        spew('%d jobs; start %d for %s\n' % (len(jobs), pid, dir[0]))
-
-    def notify_finish(pid, status, jobs):
+    while True:
+        status = getjob(lambda *a,**k: None)()
         spew('%d jobs; %d finished (' % (len(jobs), pid))
         if os.WIFEXITED(status):
             spew('exited with status ', str(os.WEXITSTATUS(status)))
@@ -293,12 +301,6 @@ def flacloop(maxjobs):
             spew('stopped with signal ', str(os.WSTOPSIG(status)))
         spew(')\n')
 
-    # Never returns (see getjob comment).
-    org.diplodocus.jobs.run(maxjobs=maxjobs, debug=debug,
-                            get_job=getjob,
-                            notify_start=notify_start,
-                            notify_finish=notify_finish)
-
 def main(argv):
     # Control the exit code for any uncaught exceptions.
     try: