a TaskException already wraps another exception; raising it gives a
hard-to-read multi-line message instead of showing the clean wrapped
original backtrace; for comparison, an asserton error in image.py line
253:
exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
Traceback (most recent call last):
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap
task.start(self)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start
BaseMultiTask.start(self, runner)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start
self.next()
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next
BaseMultiTask.next(self)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next
self.stop()
File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop
assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"
AssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)
vs.
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/chrysn/git/whipper/morituri/rip/main.py", line 27, in main
ret = c.parse(sys.argv[1:])
File "/home/chrysn/git/whipper/morituri/rip/main.py", line 94, in parse
logcommand.LogCommand.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
return self.subCommands[command].parse(args[1:])
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 401, in parse
return self.subCommands[command].parse(args[1:])
File "/home/chrysn/git/whipper/morituri/common/logcommand.py", line 62, in parse
command.Command.parse(self, argv)
File "/home/chrysn/git/whipper/morituri/extern/command/command.py", line 363, in parse
ret = self.do(args)
File "/home/chrysn/git/whipper/morituri/rip/image.py", line 184, in do
cueImage.setup(runner)
File "/home/chrysn/git/whipper/morituri/image/image.py", line 75, in setup
runner.run(verify)
File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 490, in run
raise TaskException(task.exception, message=msg)
morituri.extern.task.task.TaskException: (AssertionError('Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)',), 'exception AssertionError at /home/chrysn/git/whipper/morituri/image/image.py:253: stop(): Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\nTraceback (most recent call last):\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 497, in _startWrap\n task.start(self)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 395, in start\n BaseMultiTask.start(self, runner)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 330, in start\n self.next()\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 401, in next\n BaseMultiTask.next(self)\n File "/home/chrysn/git/whipper/morituri/extern/task/task.py", line 351, in next\n self.stop()\n File "/home/chrysn/git/whipper/morituri/image/image.py", line 253, in stop\n assert taskk.length is not None, "Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)"\nAssertionError: Track length was not found; look for earlier errors in debug log (set RIP_DEBUG=4)\n')
* update README to force python2
* add support for PRE_EMPHASIS detection; mark pre-emphasis as FLAGS PRE in .cue
* correct typo, s/ivar/type/ for pre_emphasis element in track table
* add SoxPeakTask, program/sox module, sox.peak_level()
* use sox peak detection in lieu of gstreamer
There are still some changes required to make whipper handle ARv2 checksums,
currently doesn't call the Task for a V2 checksum. V1 should keep working as-is.
* Address issue #24
* Remove getReadCaches() & replace it with getCache()
Now whipper always follows XDG specifications. All changes were documented into the README file.
The changes introduced here aren't backward compatible so, after updating whipper, you may need to configure it again (old config file are retained, though).
This information can be quite helpful when a user does automated ripping
and in a second step retags the images to the correct release (using the
-R option). Using this approach it sometimes turns out that the
specific needs to be added to MusicBrainz first or the disc id needs to
be added to an existent release. In this case the user needs the lookup
id.
Fixes#59 on github.
Saddening to see though that this was exposed because someone put
a unicode dash in an otherwise normal album title. People should stop
abusing unicode just because they can.