2009-05-22 Thomas Vander Stichele * morituri/common/common.py: * morituri/common/renamer.py: Pychecker fixes. 2009-05-22 Thomas Vander Stichele * 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 * 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 * 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 * examples/readdisc.py: Move constants to common 2009-05-16 Thomas Vander Stichele * examples/readdisc.py: * examples/readhtoa.py: * examples/readtoc.py: Rename IndexTable to Table. 2009-05-16 Thomas Vander Stichele * 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 * 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 * morituri/common/common.py: * morituri/image/cue.py: Use FRAMES_PER_SECOND where appropriate. 2009-05-16 Thomas Vander Stichele * 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 * examples/readdisc.py: Get our metadata only from the toc. 2009-05-16 Thomas Vander Stichele * examples/readdisc.py: Also work for discs without htoa. 2009-05-16 Thomas Vander Stichele * examples/readdisc.py: Write .m3u file. 2009-05-15 Thomas Vander Stichele * examples/readdisc.py: Rip HTOA as well. Add disc-template parameter. 2009-05-15 Thomas Vander Stichele * 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 * 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 * 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 * 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 * 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 * morituri/image/toc.py: Add some debugging. 2009-05-15 Thomas Vander Stichele * 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 * 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 * 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 * examples/readhtoa.py: Fix example. 2009-05-07 Thomas Vander Stichele * 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 * 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 * examples/readdisc.py: filter out slashes when deciding on file names. 2009-05-07 Thomas Vander Stichele * morituri/common/task.py: * morituri/image/image.py: Remove prints. Describe tasks. 2009-05-07 Thomas Vander Stichele * 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 * morituri/common/common.py: Set the object when we don't persist. * examples/readdisc.py: Small fixes. 2009-05-06 Thomas Vander Stichele * examples/readdisc.py: Fix up cue file reading. 2009-05-06 Thomas Vander Stichele * examples/readdisc.py: Add musicbrainz code for disc naming. 2009-05-06 Thomas Vander Stichele * morituri/image/table.py: * morituri/image/toc.py: Delete old code. 2009-05-06 Thomas Vander Stichele * 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 * 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 * 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 * examples/readdisc.py: * morituri/image/table.py: * morituri/test/test_image_table.py: Fix up and deprecate stuff. 2009-05-04 Thomas Vander Stichele * 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 * examples/readdisc.py (added): Add an example to read a whole disc. Doesn't work yet. 2009-05-04 Thomas Vander Stichele * examples/readhtoa.py: Fix up readhtoa example. Add offset option. 2009-05-04 Thomas Vander Stichele * 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 * morituri/program/cdrdao.py: Convert ReadTableTask to a CDRDAOTask subclass. * examples/ARcalibrate.py: * morituri/program/cdparanoia.py: Adapt. 2009-05-04 Thomas Vander Stichele * morituri/program/cdrdao.py: Fix up index scanning's progress report. Add some debugging. 2009-05-04 Thomas Vander Stichele * morituri/program/cdrdao.py: * morituri/test/test_program_cdrdao.py: Fix up tests. Use an IndexTable. 2009-05-04 Thomas Vander Stichele * morituri/program/cdrdao.py: Massage out a base class for running cdrdao. 2009-05-04 Thomas Vander Stichele * 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 * 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 * morituri/common/checksum.py: Update debugging. Add repr. 2009-05-04 Thomas Vander Stichele * examples/ARcue.py: Handle case where we have no matching response. 2009-05-03 Thomas Vander Stichele * morituri/common/task.py: Distinguish more clearly between MultiSeparateTask and MultiCombinedTask. 2009-05-03 Thomas Vander Stichele * morituri/image/cue.py: * morituri/test/test_image_cue.py: Add dumping of .cue files. 2009-05-03 Thomas Vander Stichele * morituri/program/cdparanoia.py: Use a temporary file to rip to. 2009-05-03 Thomas Vander Stichele * examples/readtrack.py: Allow specifying the track to save. 2009-05-03 Thomas Vander Stichele * 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 * 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 * 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 * 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 * morituri/common/taskgtk.py: Bug fix. 2009-05-03 Thomas Vander Stichele * 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 * examples/ARcalibrate.py (added): Add an example that calculates the read offset of your drive using AccurateRip. 2009-05-03 Thomas Vander Stichele * morituri/program/cdrdao.py: Add a task to read the Table. 2009-05-02 Thomas Vander Stichele * morituri/common/task.py: * morituri/image/image.py: Add some debugging. 2009-05-01 Thomas Vander Stichele * examples/readhtoa.py (added): Add an example that detects and rips the Hidden Track One Audio. 2009-05-01 Thomas Vander Stichele * examples/readtoc.py: * morituri/program/cdrdao.py (added): Move the ReadTocTask to the new cdrdao module. 2009-05-01 Thomas Vander Stichele * examples/readtrack.py: * morituri/program/cdparanoia.py: Move ReadTrackTask to cdparanoia module. 2009-05-01 Thomas Vander Stichele * examples/readtrack.py (added): Add an example that reads a track using cdparanoia. 2009-05-01 Thomas Vander Stichele * 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 * morituri/common/checksum.py: Debug fixes. 2009-05-01 Thomas Vander Stichele * 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 * examples/trm.py: Allow loading and saving fingerprints from a pickle. 2009-05-01 Thomas Vander Stichele * 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 * examples/readtoc.py: Update to work on my desktop. 2009-05-01 Thomas Vander Stichele * morituri/common/task.py: Make task subclass log.Log 2009-05-01 Thomas Vander Stichele * morituri/common/log.py: Add external log module and use it. 2009-04-29 Thomas Vander Stichele * morituri/test/cure.toc (added): Add an example .toc file for the test. 2009-04-28 Thomas Vander Stichele * examples/readtoc.py: Extract and print TOC. 2009-04-28 Thomas Vander Stichele * morituri/test/test_image_toc.py (added): * morituri/image/toc.py (added): Add first stab at .toc parsing. 2009-04-28 Thomas Vander Stichele * examples/readtoc.py: get errors from output too. 2009-04-28 Thomas Vander Stichele * 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 * 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 * examples/movecue.py (added): Add a script that moves a .cue file in its corresponding directory. 2009-04-26 Thomas Vander Stichele * 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 * 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 * morituri/common/checksum.py: Add some debugging. * morituri/test/test_image_image.py: Run less verbose. 2009-04-25 Thomas Vander Stichele * 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 * morituri/test/test_image_image.py: Fix name. 2009-04-25 Thomas Vander Stichele * 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 * 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 * morituri/common/task.py: * morituri/image/image.py: Move MultiTask to the task module. 2009-04-20 Thomas Vander Stichele * 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 * examples/ARcue.py: Fix a bug in the gtk example. 2009-04-20 Thomas Vander Stichele * examples/readtoc.py: Read the toc using cdrdao. Now sets progress based on which frame it is on. 2009-04-20 Thomas Vander Stichele * morituri/common/task.py: Add a __main__ example using DummyTask. 2009-04-19 Thomas Vander Stichele * morituri/common/task.py: Make sure we also show progress when it's 0%, at the start. 2009-04-19 Thomas Vander Stichele * morituri/image/cue.py: Use names for matches in regexps. 2009-04-19 Thomas Vander Stichele * examples/readtoc.py (added): Add an example to read the TOC, not finished yet. 2009-04-19 Thomas Vander Stichele * 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 * examples/gtkchecksum.py: * morituri/common/checksum.py: Final crc->checksum fixes. 2009-04-15 Thomas Vander Stichele * 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 * 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 * 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 * 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 * morituri/image/image.py: Refactor to use TOC class. * morituri/image/toc.py: Fully document. 2009-04-15 Thomas Vander Stichele * 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 * 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 * 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 * morituri/image/image.py: Also look for audio file basename relative to cue file. 2009-04-13 Thomas Vander Stichele * examples/ARcue.py: Make output a bit nicer, mentioning whether tracks were accurately ripped. 2009-04-13 Thomas Vander Stichele * 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 * 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 * 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 * 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 * examples/ARcue.py: Add option to run either command-line or gtk. 2009-04-12 Thomas Vander Stichele * morituri/image/image.py: Create a MultiTask base class, and make AudioRipCRCTask use it. 2009-04-12 Thomas Vander Stichele * 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 * 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 * examples/ARcue.py: * examples/gtkcrc.py: Rework both examples to look more similar. 2009-04-12 Thomas Vander Stichele * examples/gtkcrc.py: * morituri/common/task.py: Move the gtk-based progress bar to task. 2009-04-12 Thomas Vander Stichele * 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 * morituri/common/task.py: Update the docs. 2009-04-12 Thomas Vander Stichele * morituri/test/test_image_image.py (added): Add tests for AudioRip CRC'ing images. 2009-04-11 Thomas Vander Stichele * 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 * morituri/image/image.py: If paths are relative, make them relative to cue file. 2009-04-11 Thomas Vander Stichele * morituri/common/task.py: clear with whitespace. 2009-04-11 Thomas Vander Stichele * 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 * examples/gtkcrc.py: * morituri/common/task.py: Add task object to listener interface methods. 2009-04-11 Thomas Vander Stichele * morituri/common/task.py: Move methods around. 2009-04-11 Thomas Vander Stichele * 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 * morituri/common/crc.py (added): Copy from task.py before splitting. 2009-04-11 Thomas Vander Stichele * examples/gtkcrc.py: * morituri/common/task.py: Don't block the main loop by infinitely scheduling set_state. 2009-04-11 Thomas Vander Stichele * 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 * 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 * 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 * 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 * 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 * 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 * examples/ARcue.py: * morituri/common/task.py: First version that seems to get some AccurateRip checksums right. 2009-02-28 Thomas Vander Stichele * 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 * morituri/common/task.py (added): Add a task abstraction.