Files
whipper-gui/ChangeLog
Thomas Vander Stichele 9992fb267f * 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 18:46:11 +00:00

745 lines
22 KiB
Plaintext

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.