* morituri/program/cdparanoia.py:
* morituri/result/result.py:
* morituri/rip/cd.py:
* morituri/test/test_program_cdparanoia.py:
Get cdparanoia version.
Store both cdparanoia and cdrdao versions on rip result.
* morituri/common/program.py:
* morituri/program/cdparanoia.py:
* morituri/result/logger.py:
* morituri/result/result.py:
Calculate speed of reading track.
Output Test and Copy speed per track in log.
Add shrinkPath to write shorter path names.
* morituri/test/test_common_common.py (added):
Add test.
* morituri/program/cdparanoia.py:
Catch ENAMETOOLONG and shrink path.
* morituri/common/program.py:
Update track result's filename if it was shrunk.
* morituri/rip/cd.py:
set the possibly shrunk path on the result.
add task argument to TaskRunner.schedule so we can get exceptions.
Add .schedule method to Task to pass self.
* morituri/common/checksum.py:
* morituri/common/encode.py:
* morituri/common/gstreamer.py:
* morituri/program/cdparanoia.py:
* morituri/program/cdrdao.py:
Adapt.
cdparanoia can hang indefinitely on scsi read errors.
For example, on some drives, when trying negative offsets.
Notice them, count them, and fail after 100.
* morituri/test/test_program_cdparanoia.py:
* morituri/test/cdparanoia.progress.error (added):
Add a test for this output.
Add some debug.
* morituri/common/encode.py:
Add more debug.
Handle the case where peak is full scale, and peakdB thus 0,
which triggered not setting self.peak.
Note unicode handling.
* morituri/test/test_image_image.py:
* morituri/image/table.py:
* morituri/program/cdparanoia.py:
* morituri/common/checksum.py:
Use unicode for paths.
Use repr for path representation.
* morituri/test/test_common_checksum.py:
Add test for unicode audio file name.
Add a shorter test file, 23 seconds.
* morituri/test/test_program_cdparanoia.py:
Update the test to adapt. Check for track quality.
* morituri/program/cdparanoia.py:
Add a measure of track quality based on the number of reads.
Use the [wrote] output for progress updates, a bit more
jittery in its output.
* morituri/rip/cd.py:
Set track quality on RipResult.
* morituri/program/cdparanoia.py:
* morituri/rip/cd.py:
Clean up the temporary unencoded file.
Pass profile as objects to tasks, so that temp files have the right
extension.
* morituri/program/cdparanoia.py:
Add encoding profiles, kept simple for now as a class and
subclasses. Use them to encode. Calculate peak level while
encoding, compared to EAC and replaygain's value.
* morituri/rip/cd.py:
Use the encoding profiles, ripping with the right extension.
Add a --profile parameter for it.
Add an exception ivar for tasks to set an exception on while
running. Make SyncRunner raise it during done()
* morituri/program/cdparanoia.py:
Set an exception if the ripped file doesn't match the expected size
(for example when disc is full)
* morituri/image/image.py:
* morituri/image/table.py:
* morituri/program/cdparanoia.py:
* morituri/test/test_image_cue.py:
Move to using a shared IndexTable for everything.
Sadly mixed with a MultiTask rename.
Add table to __init__, so we can correctly calculate cdparanoia's
strange ripping regions.
* examples/ARcalibrate.py:
When we found a positive match on a first track, match all the other
tracks too for confirmation.