Files
whipper-gui/ChangeLog
Thomas Vander Stichele d17829c36a * morituri/result/result.py:
Add max confidence from database.
	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Move AccurateRip checking to program.py
	  Re-rip if verification failed when continuing a rip.
2009-06-15 07:07:41 +00:00

1417 lines
43 KiB
Plaintext

2009-06-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/result/result.py:
Add max confidence from database.
* morituri/common/program.py:
* morituri/rip/cd.py:
Move AccurateRip checking to program.py
Re-rip if verification failed when continuing a rip.
2009-06-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
Better debug.
2009-06-09 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/program.py:
* morituri/rip/cd.py:
Serialize the rip result after every rip, so we can pick up
where we left off with all result data.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/program.py:
Move getPath to Program.
Remove arguments to ripTrack that can be gotten from
trackResult.
* morituri/rip/cd.py:
Continue without musicbrainz metadata.
Unify htoa and normal track ripping.
* morituri/result/result.py:
Add getTrackResult so it's easier to look up track results
when there's a HTOA.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/program.py:
* morituri/rip/cd.py:
Move HTOA checking to program.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/result/logger.py:
Fix for toctable->table
* morituri/common/program.py:
* morituri/rip/cd.py:
Move lots of functionality to program module.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/result/result.py:
Change toctable to table since it's a full index table.
* morituri/common/Makefile.am:
* morituri/common/program.py (added):
Add module and class for program state.
* morituri/rip/cd.py:
Use the program state to clean up the do() function.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/cd.py:
Massage into 80 characters per line.
Make pycdio/cdio optional.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/drive.py:
Make pycdio and cdio optional.
2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Add getPregap() method.
* morituri/rip/cd.py:
Use artist.name, not getUniqueName, to avoid monstruous names for
Muse.
Pass mbdiscid to getPath, so Unknown Disc can be saved with it.
Don't set the date if the release doesn't have one.
Set pregap on trackResult using new Track.getPregap()
Write all log/cue/m3u files as utf-8.
2009-06-06 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/cdparanoia.progress:
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.
2009-06-05 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/cd.py:
Use RipResult to store result information.
* morituri/result/logger.py (added):
Add a Logger to handle the RipResult, much like
EAC's log file.
2009-06-05 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/cd.py:
Comment out number of track setting on tag for now.
MusicBrainz can give us dates in YYYY, YYYY-MM, and YYYY-MM-DD
format, so convert to YYYY-MM-DD always.
Unmount the data part of the CD we want to rip if it is mounted.
Adapt to peak level change.
Don't try to write data tracks to the m3u file.
Resolve the device path to the actual device path.
2009-06-05 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/result/result.py:
Add a Logger base class.
2009-06-05 Thomas Vander Stichele <thomas at apestaart dot org>
* configure.ac:
* morituri/Makefile.am:
* morituri/result (added):
* morituri/result/result.py (added):
* morituri/result/__init__.py (added):
* morituri/result/Makefile.am (added):
Add classes to store track and rip results in.
2009-06-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
Add an argument for the delimiter in formatting.
* morituri/common/encode.py:
Most programs use peak volume, not power, so do this too.
2009-06-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/common.py:
Add a method for diffing multiline strings.
2009-06-02 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/encode.py:
Add a test() method to the profile so we can warn about bad
flacenc versions.
Encode track number and count, and release date, if possible.
* morituri/rip/cd.py:
Fix another off-by-one error in the tag encoding.
2009-06-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
* morituri/rip/cd.py:
Handle another off-by-one error in the m3u handling.
Add a getTagList function.
Use it to encode tags.
2009-06-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/encode.py:
* 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.
2009-06-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/encode.py:
* 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.
2009-05-31 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/cd.py:
Clean up track numbering confusion.
2009-05-26 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/encode.py (added):
* examples/encode.py (added):
Add an Encode Task, hardcoded to flac for now.
Add an example, that also sets tags.
2009-05-26 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Add debug.
* morituri/rip/drive.py:
Show all drives, not just the ones that happen to have an Audio CD
inserted.
2009-05-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/cd.py:
Add asserts for comparing id's between the simple toc and
the full table.
Create the output directory before ripping the htoa.
Ignore data tracks for now.
Don't fail if we have no AccurateRip responses.
* morituri/image/table.py:
Add a session ivar to Track.
Factor in session leadin when calculating track length
of last track in a session.
add getMusicBrainzSubmitURL()
add _getSessionGap() because the session gap size is different
for session 2 and all following.
Use it in merge() to get offsets right.
Fix getAccurateRipURL by only using the audio tracks for the
'length in tracks' number
Temporarily disable writing out data tracks to a .cue file,
since it's not implemented yet.
Add canCue to see if we can write a .cue file from the given table,
and debug why not if not.
* morituri/program/cdrdao.py:
Rework to rip each session separately instead of using session 9.
This fixes session 9 read-toc missing the pregap.
Add a simple LineParser for handling output from disk-info.
Count tracks relatively for the session, because the output for
session 2 for track numbers picks up where session 1 left off.
Don't set leadout from TOC printing since for the same reason
session 2's leadout is absolute, not relative to start of session.
Add a DiscInfoTask.
Convert Table and Toc reading tasks to multitasks, first getting the
number of sessions, then reading table/toc for each session.
* morituri/test/test_image_table.py:
Fix up MusicBrainz disc id for my Ladyhawke disc.
Add AccurateRip URL verification, compared against EAC's.
* morituri/test/test_image_toc.py:
Use two separate session read-toc output files to verify
the case of Das Capital.
Verify musicbrainz URL.
2009-05-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Add documentation.
Use a _task counter instead of duplicating tasks to
__tasks; this allows us to add tasks after starting.
Catch Exceptions during next() so that we don't get
stuck in a main loop that doesn't exit.
Raise it later when we're done.
2009-05-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
Since the version was inherited from the current code
in unpickled objects, separate into classVersion and
an instanceVersion set from __init__.
2009-05-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/toc.py:
Add a logName for debugging.
2009-05-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
* morituri/image/image.py:
Correctly chain up to parent __init__ for MultiTasks
2009-05-24 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/capital.1.toc (added):
* morituri/test/capital.2.toc (added):
Add two .toc's for two sessions of a 2 session disc
* morituri/image/table.py:
Add a merge method to merge in a second session.
* morituri/test/Makefile.am:
* morituri/test/test_image_toc.py:
Add a test for merging the Das Capital sessions, gets
the CDDB disc id right.
2009-05-24 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
Add a persisted cache so that we can store pickles on discs.
Automatically delete them if the class version is newer than
the object's.
* morituri/rip/cd.py:
Use it.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Add a version ivar to help with versioning pickled objects.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
Add copy and test CRC's to object.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/Makefile.am:
* morituri/common/drive.py (added):
Add drive module.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
* morituri/program/cdrdao.py:
* morituri/rip/cd.py:
* morituri/rip/offset.py:
Add device argument to ripping/scanning tasks.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/accurip.py:
* morituri/image/image.py:
* morituri/test/Makefile.am:
* morituri/test/test_image_image.py:
* morituri/test/test_common_accurip.py (added):
Move accuraterip stuff to the accurip module.
Move/create new test file.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/Makefile.am:
* morituri/rip/main.py:
* morituri/rip/drive.py (added):
Add 'rip drive list' command to list available drives.
* morituri/common/accurip.py:
Add force.
* morituri/rip/cd.py:
Add --output-directory argument.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/Makefile.am:
* morituri/rip/cd.py:
* morituri/common/accurip.py (added):
Add a module for handling a cache of AccurateRip results.
Use it.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/Makefile.am:
* morituri/rip/main.py:
* morituri/rip/cd.py (added):
Add second command, 'rip cd rip' before factoring out functionality.
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/rip/Makefile.am:
* morituri/rip/main.py:
* morituri/rip/offset.py (added):
Add first command, 'rip offset find'
2009-05-23 Thomas Vander Stichele <thomas at apestaart dot org>
* Makefile.am:
* morituri/test/Makefile.am:
Make distcheck work.
2009-05-22 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:
More pychecker fixes.
2009-05-22 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
* morituri/common/renamer.py:
Pychecker fixes.
2009-05-22 Thomas Vander Stichele <thomas at apestaart dot org>
* RELEASE:
* misc/pycheckerrc:
* misc/show-coverage.py:
* morituri/image/Makefile.am:
* morituri/program/Makefile.am:
* RELEASE (added):
* morituri/image/Makefile.am (added):
* morituri/program/Makefile.am (added):
* misc/show-coverage.py (added):
* misc/pycheckerrc (added):
more additions
2009-05-22 Thomas Vander Stichele <thomas at apestaart dot org>
* AUTHORS:
* Makefile.am:
* NEWS:
* TODO:
* autogen.sh:
* configure.ac:
* examples/ARcalibrate.py:
* misc/Makefile.am:
* misc/morituri-uninstalled:
* morituri.spec.in:
* morituri/Makefile.am:
* morituri/common/Makefile.am:
* morituri/common/logcommand.py:
* morituri/extern/Makefile.am:
* morituri/rip/Makefile.am:
* morituri/rip/__init__.py:
* morituri/rip/main.py:
* morituri/test/Makefile:
* morituri/test/Makefile.am:
* configure.ac (added):
* AUTHORS (added):
* morituri.spec.in (added):
* Makefile.am (added):
* morituri/test/Makefile.am (added):
* morituri/extern/Makefile.am (added):
* morituri/common/logcommand.py (added):
* morituri/common/Makefile.am (added):
* morituri/Makefile.am (added):
* morituri/rip (added):
* morituri/rip/__init__.py (added):
* morituri/rip/Makefile.am (added):
* morituri/rip/main.py (added):
* misc/Makefile.am (added):
* misc/morituri-uninstalled (added):
* autogen.sh (added):
* NEWS (added):
Start autotooling. Add a command-line application.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
read all sessions by reading session 9.
* morituri/image/toc.py:
Parse ZERO statements properly.
Also set absolute offsets when we know them from the .toc file.
Properly set audio flag on tracks.
FIXME: probably doesn't work if the .toc does not have lengths.
* morituri/image/table.py:
Add some debug to cddb disc id calculation.
Fix absolutize function, it was going one index too far.
raise ValueError when overriding .absolute with a wrong value.
* examples/readdisc.py:
Show CDDB disc id at the start.
Assert when toc and table have different disc id's (to be fixed)
* morituri/test/test_image_cue.py:
Update for having the table already with absolute values.
* morituri/test/test_image_toc.py:
Add Ladyhawke CDDB test, it has a data track.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Move constants to common
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
* examples/readhtoa.py:
* examples/readtoc.py:
Rename IndexTable to Table.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
* morituri/image/image.py:
* morituri/image/table.py:
* morituri/image/toc.py:
* morituri/program/cdparanoia.py:
* morituri/program/cdrdao.py:
* morituri/test/test_image_cue.py:
* morituri/test/test_image_table.py:
Rename IndexTable to Table.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
* morituri/image/image.py:
* morituri/image/table.py:
* morituri/image/toc.py:
* morituri/program/cdrdao.py:
* morituri/test/test_image_cue.py:
* morituri/test/test_image_table.py:
Rename ITTrack to Track.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
* morituri/image/cue.py:
Use FRAMES_PER_SECOND where appropriate.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:
* morituri/common/common.py:
* morituri/image/image.py:
* morituri/image/table.py:
* morituri/program/cdparanoia.py:
Move constants to common
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Get our metadata only from the toc.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Also work for discs without htoa.
2009-05-16 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Write .m3u file.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Rip HTOA as well. Add disc-template parameter.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Fix a subtle bug in our CDDB disc id calculation.
The length of the audio should be calculated as the delta
between leadout and start already converted (and truncated)
to seconds.
* morituri/test/bloc.cue:
* morituri/test/test_image_toc.py:
Fix up tests for this.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
Fix up track counting so HTOA can be ripped again.
* examples/readhtoa.py:
Fix up example so it works again, tested on Silent Alarm.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_image_toc.py:
* morituri/test/bloc.cue (added):
Add an expected .cue file for the bloc party toc.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/toc.py:
Calculate the leadout from the sum of the track lengths.
* morituri/test/breeders.cue:
* morituri/test/cure.cue:
Adapt expected results for DISCID.
* morituri/image/table.py:
Add an assert for hasTOC() when doing .cue()
* morituri/test/test_image_toc.py:
* morituri/test/test_image_cue.py:
absolutize before cue()
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Only add DISCID if our table is a TOC (which it isn't
with our current .toc file parsing)
* morituri/test/test_image_cue.py:
* morituri/test/test_image_toc.py:
Fix up tests; testsuite passes again.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/toc.py:
Add some debugging.
2009-05-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Update .cue writing:
- customise program name
- add DISCID
- use counter for FILE lines
- put FILE line before TRACK if track does not have INDEX 00
Take counter into account for setFile
Fix off-by-one in setFile
* examples/readdisc.py:
Add --track-template.
Pass counter to setFile.
2009-05-14 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Add CDText writing to .cue() method.
* morituri/image/toc.py:
Add CDText parsing.
* morituri/test/test_image_toc.py:
* morituri/test/breeders.cue (added):
Add a test for cue'ing the breeders' toc.
2009-05-14 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
* morituri/image/toc.py:
Add parsing of ISRC codes.
Add first part of CDTEXT stuff.
* morituri/test/test_image_toc.py:
Add test for converting .toc to .cue
* morituri/test/cure.cue
Add reference for converted cure.toc
2009-05-10 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readhtoa.py:
Fix example.
2009-05-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
* morituri/test/test_image_table.py:
Correctly calculate MusicBrainz disc id for enhanced cd's.
2009-05-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Log on runners too.
* morituri/program/cdrdao.py:
Abort if output has ERROR by killing and setting an exception.
2009-05-07 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
filter out slashes when deciding on file names.
2009-05-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
* morituri/image/image.py:
Remove prints. Describe tasks.
2009-05-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
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)
2009-05-07 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
Set the object when we don't persist.
* examples/readdisc.py:
Small fixes.
2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Fix up cue file reading.
2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
Add musicbrainz code for disc naming.
2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
* morituri/image/toc.py:
Delete old code.
2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/toc.py:
* morituri/test/test_image_toc.py:
* morituri/test/test_program_cdrdao.py:
After careful vetting, fix up the expected values after toc parsing.
Fix (untested) INDEX handling. Fix handling of START.
2009-05-05 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
* morituri/test/test_image_table.py:
Implement MusicBrainz disc id. Works for audio-only discs,
have to figure out why it fails for an Enhanced CD like the
Ladyhawke one.
2009-05-05 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/table.py:
Add logging.
Add methods to clear a table of files, and to absolutize indexes
as long as the source is the same file, and to set a File on a
given index, adjusting all following indexes that match the
duration, and check if the IndexTable has all information for a TOC.
* morituri/image/toc.py:
Add logging.
Use a counter for the source.
Fix up index offset calculation.
* morituri/program/cdrdao.py:
Use a real IndexTable as the result, instead of a TocFile.
* morituri/image/cue.py:
Use a real IndexTable to store tracks.
* morituri/test/test_image_toc.py:
The toc file now has a table which has the tracks.
Fix the tests to adjust for wrong index calculations.
* morituri/test/test_image_cue.py:
* morituri/test/test_image_image.py:
* morituri/image/image.py:
The cue file now has a table which has the tracks.
* morituri/test/test_image_table.py:
Add assertions to make sure when the table can serve as a TOC.
* examples/readdisc.py:
Adjust for changes. Fix up to include AccurateRip results.
First time we can do a complete normal rip including verifying
against AccurateRip results!
2009-05-05 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py:
* morituri/image/table.py:
* morituri/test/test_image_table.py:
Fix up and deprecate stuff.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/movecue.py:
* examples/readcue.py:
* morituri/image/cue.py:
* morituri/image/image.py:
* morituri/image/toc.py:
* morituri/program/cdrdao.py:
* morituri/test/test_image_cue.py:
* morituri/test/test_image_toc.py:
Cue -> CueFile
TOC -> TocFile
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readdisc.py (added):
Add an example to read a whole disc. Doesn't work yet.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readhtoa.py:
Fix up readhtoa example. Add offset option.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcalibrate.py:
* examples/readhtoa.py:
* examples/readtoc.py:
* morituri/program/cdrdao.py:
Rename ReadTOCTask to ReadIndexTableTask.
Rename ReadTableTask to ReadTOCTask.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
Convert ReadTableTask to a CDRDAOTask subclass.
* examples/ARcalibrate.py:
* morituri/program/cdparanoia.py:
Adapt.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
Fix up index scanning's progress report.
Add some debugging.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
* morituri/test/test_program_cdrdao.py:
Fix up tests. Use an IndexTable.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
Massage out a base class for running cdrdao.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
* morituri/test/test_program_cdrdao.py (added):
Split out the parser from the task. Test the parser.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
* 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.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:
Update debugging. Add repr.
2009-05-04 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
Handle case where we have no matching response.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Distinguish more clearly between MultiSeparateTask and
MultiCombinedTask.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
* morituri/test/test_image_cue.py:
Add dumping of .cue files.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
Use a temporary file to rip to.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtrack.py:
Allow specifying the track to save.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Make SyncRunner clear previous description/progress task by
tracking longest output given up to now.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
Add a task to read and verify a track.
* examples/readtrack.py:
Use it to clean up code.
* morituri/common/task.py:
describe a MultiTask better.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
Create a Persister class to wrap a possible pickle path.
* examples/trm.py:
Use it.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdparanoia.py:
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.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/taskgtk.py:
Bug fix.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
* morituri/common/taskgtk.py:
Split off GtkProgressRunner in separate module to not import gtk
everywhere.
* examples/ARcalibrate.py:
* examples/ARcue.py:
* examples/gtkchecksum.py:
* examples/trm.py:
Adapt.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcalibrate.py (added):
Add an example that calculates the read offset of your drive
using AccurateRip.
2009-05-03 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/program/cdrdao.py:
Add a task to read the Table.
2009-05-02 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
* morituri/image/image.py:
Add some debugging.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readhtoa.py (added):
Add an example that detects and rips the Hidden Track One Audio.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtoc.py:
* morituri/program/cdrdao.py (added):
Move the ReadTocTask to the new cdrdao module.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtrack.py:
* morituri/program/cdparanoia.py:
Move ReadTrackTask to cdparanoia module.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtrack.py (added):
Add an example that reads a track using cdparanoia.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/cdparanoia.progress (added):
* morituri/test/test_program_cdparanoia.py (added):
* morituri/program/__init__.py (added):
* morituri/program/cdparanoia.py (added):
Add a module to wrap cdparanoia. Add a test for parsing
the progress report output.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:
Debug fixes.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/common.py:
Create some common functions to parse MSF and back.
* morituri/image/toc.py:
Use it here.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/trm.py:
Allow loading and saving fingerprints from a pickle.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/toc.py:
* morituri/test/test_image_toc.py:
* morituri/test/bloc.toc (added):
Fix up .toc parsing to correct index 0 behaviour.
Add Bloc Party's Silent Alarm .toc file to test HTOA.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtoc.py:
Update to work on my desktop.
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Make task subclass log.Log
2009-05-01 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/log.py:
Add external log module and use it.
2009-04-29 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/cure.toc (added):
Add an example .toc file for the test.
2009-04-28 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtoc.py:
Extract and print TOC.
2009-04-28 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_image_toc.py (added):
* morituri/image/toc.py (added):
Add first stab at .toc parsing.
2009-04-28 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtoc.py:
get errors from output too.
2009-04-28 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
* morituri/image/table.py:
* morituri/test/test_image_image.py:
* morituri/test/test_image_table.py:
Rename toc.TOC to table.Table
2009-04-28 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_image_table.py (added):
* morituri/image/table.py (added):
* morituri/test/test_image_toc.py (deleted):
* morituri/image/toc.py (deleted):
Move files around in preparation for the .toc file parsing.
2009-04-26 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/movecue.py (added):
Add a script that moves a .cue file in its corresponding directory.
2009-04-26 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/kanye.cue (added):
Add a cue test with mixed mode.
* morituri/image/cue.py:
* morituri/test/test_image_cue.py:
Handle it properly.
2009-04-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
getRealPath should be here, it doesn't need anything outside
the .cue file
* morituri/image/image.py:
Proxy it here.
2009-04-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:
Add some debugging.
* morituri/test/test_image_image.py:
Run less verbose.
2009-04-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Allow a SyncRunner to be constructed with verbose too.
Separate a 'running' verbose mode from that.
Fixes unwanted test output.
* morituri/test/test_image_image.py:
Run without verbosity.
2009-04-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_image_image.py:
Fix name.
2009-04-25 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_common_renamer.py (added):
* morituri/common/renamer.py (added):
Add a way of doing transactional file renames, as well as their
metafile updates.
2009-04-21 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Add a 'described' method so listeners can get proper notification
of description changes, and update their description in between
progress changes.
Add a MultiCombinedTask that reports on progress over all tasks
combined.
* examples/trm.py:
Add a playlist option to the example. Still needs to store results
to pickles, preferably after each completed task.
* morituri/common/checksum.py:
Add audioconvert to make sure we can trm ogg files.
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
* morituri/image/image.py:
Move MultiTask to the task module.
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/checksum.py:
Add a task to calculate a trm fingerprint.
* examples/trm.py (added):
Add an example.
Strangely enough it starts burstily, doing 10% directly, halting,
then progressing quickly,
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
Fix a bug in the gtk example.
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtoc.py:
Read the toc using cdrdao. Now sets progress based on which
frame it is on.
2009-04-20 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Add a __main__ example using DummyTask.
2009-04-19 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Make sure we also show progress when it's 0%, at the start.
2009-04-19 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
Use names for matches in regexps.
2009-04-19 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/readtoc.py (added):
Add an example to read the TOC, not finished yet.
2009-04-19 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/extern (added):
* morituri/extern/__init__.py (added):
* morituri/extern/asyncsub.py (added):
Add extern module; add asynchronous subprocess Popen from
http://code.activestate.com/recipes/440554/
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/gtkchecksum.py:
* morituri/common/checksum.py:
Final crc->checksum fixes.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/common/checksum.py:
* morituri/image/image.py:
* morituri/image/toc.py:
* examples/gtkchecksum.py (added):
* examples/gtkcrc.py (deleted):
More crc->checksum changes.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/common/checksum.py:
* morituri/image/image.py:
* morituri/test/test_image_image.py:
Change crc to checksum everywhere.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
* morituri/image/toc.py:
* morituri/common/checksum.py (added):
* morituri/common/crc.py (deleted):
Rename crc to checksum, because AccurateRip checksums are not CRC's.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/image/image.py:
* morituri/test/test_image_image.py:
Make everything use TOC for the id's.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
Refactor to use TOC class.
* morituri/image/toc.py:
Fully document.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_image_toc.py (added):
* morituri/image/toc.py (added):
Add an abstraction for a TOC.
Take data tracks into account correctly for CDDB and AccurateRip
disc ID's.
2009-04-15 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
* morituri/test/test_image_image.py:
AccurateRip binary files actually contain multiple responses, so
parse all of them.
* examples/ARcue.py:
Handle case of not having a response, and having multiple responses.
2009-04-14 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/crc.py:
Actually return the CRC when checking frame 5.
* morituri/test/test_image_image.py:
Update test for this fix.
2009-04-13 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
Also look for audio file basename relative to cue file.
2009-04-13 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
Make output a bit nicer, mentioning whether tracks were
accurately ripped.
2009-04-13 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
Add an object to parse the response of AccurateRip.
* morituri/test/test_image_image.py:
* morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added):
Add a test for it, based on my Kings Of Leon CD.
2009-04-13 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
Add the 150 frames for the leadin only to the CDDB calculation.
Add methods to calculate AccurateRip id's and URL.
* morituri/test/test_image_image.py:
Add tests for it.
* examples/ARcue.py:
Show AccurateRip URL.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/common/crc.py:
* morituri/image/image.py:
* morituri/test/test_image_image.py:
Calculate CDDB disc id.
Tested on my Kings Of Leon CD.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/image/image.py:
* morituri/test/test_image_image.py:
Add a task to verify a disk image, which also calculates
track lengths for tracks the cue file doesn't know the length of.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
Add option to run either command-line or gtk.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
Create a MultiTask base class, and make AudioRipCRCTask
use it.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
* morituri/test/test_image_image.py:
Add a task for calculating frame length of an audio file.
Add a test for it.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Schedule the start from the main loop, otherwise the
task might complete before we're in the main loop,
and then the loop.quit() doesn't work.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* examples/gtkcrc.py:
Rework both examples to look more similar.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/gtkcrc.py:
* morituri/common/task.py:
Move the gtk-based progress bar to task.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/gtkcrc.py:
* morituri/common/crc.py:
* morituri/common/task.py:
* morituri/image/image.py:
Add a 'schedule' call to the TaskRunner class, so that we can
abstract things like gobject.timeout_add and reactor.callLater
Pass the runner to the task in Task.start() so a task can call
schedule.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Update the docs.
2009-04-12 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/test_image_image.py (added):
Add tests for AudioRip CRC'ing images.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/track-separate.cue (added):
* morituri/test/track.flac (added):
* morituri/test/Makefile (added):
* morituri/test/track-single.cue (added):
Add a simple 10 frame flac file, and two .cue files
using it.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/image.py:
If paths are relative, make them relative to cue file.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
clear with whitespace.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/common/task.py:
* morituri/image/image.py (added):
Add an object for handling an Image based on a .cue file.
Create a Task for CRC'ing the whole Image.
Make the example use this new task instead.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/gtkcrc.py:
* morituri/common/task.py:
Add task object to listener interface methods.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Move methods around.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* examples/gtkcrc.py:
* morituri/common/crc.py:
* morituri/common/task.py:
Split out generic task/runner from CRC tasks.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/crc.py (added):
Copy from task.py before splitting.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/gtkcrc.py:
* morituri/common/task.py:
Don't block the main loop by infinitely scheduling
set_state.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* examples/gtkcrc.py:
* morituri/common/task.py:
Make a real Task interface and use it.
Make runners reusable for multiple tasks.
gtkcrc.py seems to be blocking updates however.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test (added):
* morituri/test/test_image_cue.py (added):
* morituri/test/kings-single.cue (added):
* morituri/test/__init__.py (added):
* morituri/test/kings-separate.cue (added):
Add test suite. Add Kings Of Leon cue files.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
Error out when the file doesn't exist.
* morituri/common/task.py:
Drag the lake.
Clean up prints.
2009-04-11 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Remove queue to avoid race.
Remove prints.
Clean up debug.
Update progress after handling buffers.
2009-04-05 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py:
Introduce constants for FRAMES_PER_DISC_FRAME
* examples/ARcue.py:
Use the constant.
Get the CRC right for the last track too.
2009-03-26 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/common/task.py:
Use an adapter to assemble CD frames.
Take into account special rules for first and last track.
Mention some bugs.
Remember to drag the lake from the task.
2009-03-22 Thomas Vander Stichele <thomas at apestaart dot org>
* examples/ARcue.py:
* morituri/common/task.py:
First version that seems to get some AccurateRip checksums right.
2009-02-28 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/image/cue.py:
publicize CueFile.tracks
Add a method to get track lengths
* examples/readcue.py:
Use it.
2009-02-28 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/common/task.py (added):
Add a task abstraction.