-#! /usr/bin/env python2.4
+#! /usr/bin/python
"""
=head1 NAME
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:
argv.extend(['-T', i])
argv.append(infile)
# flac 1.1.3 PICTURE support
- argv.extend(['--picture', '3|image/jpeg|||cover.front'])
+ if os.path.exists('cover.front'):
+ argv.extend(['--picture', '3|image/jpeg|||cover.front'])
spew('Running flac\n')
status = os.spawnvp(os.P_WAIT, argv[0], argv)
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')
ld = os.listdir(dir)
if ld == ['using-tags'] or sorted(ld) == ['cover.front', 'using-tags']:
try:
- os.unlink(dir + '/cover.front')
+ try:
+ os.unlink(dir + '/cover.front')
+ except OSError:
+ pass
os.unlink(dir + '/using-tags')
os.rmdir(dir)
except EnvironmentError:
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)))
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: