2013-01-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/config.py:
	* morituri/rip/cd.py:
	* morituri/rip/drive.py:
	  Handle missing config better.
	  Fixes #111.

2013-01-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/config.py:
	* morituri/rip/cd.py:
	* morituri/test/test_common_config.py:
	  strip model/release too.

2012-12-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  feature: add %x for extension to track/disc template.

2012-12-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  feature: add %r/%R for release type to track/disc template.
	* morituri/rip/image.py:
	  feature: add rip image rename to rename files based on metadata.

2012-12-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/musicbrainzngs.py:
	* morituri/rip/debug.py:
	  Also store releaseType for disc metadata.

2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  add release id to output.
	* morituri/rip/image.py:
	  add --release-id to rip image retag.  Fixes #96.

2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  Strip bitrate tags too for comparison of dicts.
	  Add a way to show us the different keys between dicts.
	* morituri/common/encode.py:
	  Debug different keys.

2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Collect all tags by replacing from newer tag messages.
	  Gets more than bitrate from flacs now.

2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Add rip debug tag to debug reading tags.

2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/image.py:
	  Use getRealPath when retagging an image, fixes bug where it
	  doesn't find the files relative to the cuepath.

2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/cd.py:
	* morituri/rip/image.py:
	  Add stdout to program.  Use it for getting musicbrainz info.

2012-12-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	* morituri/test/test_program_cdparanoia.py:
	  Add a task that can analyze the drive for whether it defeats
	  the audio cache.
	* morituri/result/result.py:
	* morituri/rip/cd.py:
	  Make it possible to store whether a drive defeats audio cache
	  in the result.
	* morituri/rip/drive.py:
	  Add rip drive analyze command to analyze caching of a drive,
	  and store it in the config.

2012-12-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Failed and done can stay unimplemented.
	  If we read stdout or stderr, reschedule immediately to process
	  all output before considering the possibility the program stopped.

2012-12-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/config.py:
	  Add methods to get/set defeating of audio cache.
	  Make sure that we set read offset even if section is already there.

2012-12-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	* morituri/program/cdrdao.py:
	  Factor out a PopenTask base class.

2012-12-03  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Store rip result after verifying AccurateRip so those results
	  are stored too.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	* morituri/result/result.py:
	  Store versions and encoding profile info in the rip result.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_gstreamer.py (added):
	* morituri/common/gstreamer.py:
	* morituri/test/Makefile.am:
	  add functions to get versions of gstreamer, gst-python,
	  and element factory plugins.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  add rip debug resultcache log command to generate a log
	  based on a cached result.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  Remove migrated classes.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/cache.py:
	  Disable the version-based persistence deleting.
	  Allow not creating a fresh ripresult when getting one.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/cache.py:
	* morituri/rip/debug.py:
	* morituri/test/test_common_cache.py:
	  Add rip debug resultcache list to list cached results.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/cache.py (added):
	* morituri/test/cache (added):
	* morituri/test/cache/result (added):
	* morituri/test/cache/result/fe105a11.pickle (added):
	* morituri/test/test_common_cache.py (added):
	* morituri/common/Makefile.am:
	* morituri/common/program.py:
	* morituri/test/Makefile.am:
	  Extract ResultCache object into separate file.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/drive.py:
	  rip drive list now shows configured read offset if applicable.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Use configured read offset for drive if possible.
	  Fixes #76.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	  Add the config object to the root command.
	* morituri/rip/offset.py:
	  Save the drive's read offset when we find it.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri.spec.in:
	* morituri/common/config.py:
	  Use XDG if we can import xdg.
	  Fix writing the config.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/drive.py:
	* morituri/rip/drive.py:
	  Extract getDeviceInfo function.

2012-12-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/config.py (added):
	* morituri/test/test_common_config.py (added):
	* morituri/common/Makefile.am:
	* morituri/test/Makefile.am:
	  First stab at adding a configuration file to store
	  drive read offsets.

2012-11-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Reset rip duration when we continue a rip but have to rerip
	  a track.

2012-11-27  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/program/cdparanoia.py:
	* morituri/result/result.py:
	  Track ripping speed for test and encode per-track.

2012-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: mustbenice

	* 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.

2012-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  Make sure we calculate fractional speed.

2012-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: mustbenice

	* 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.

2012-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri.spec.in:
	  Add plugins directory.

2012-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/result/logger.py:
	* morituri/result/result.py:
	* morituri/rip/cd.py:
	* morituri/rip/main.py:
	  Expose loggers as pluggable.
	  Add --logger option to rip cd rip to specify logger.

2012-11-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* morituri/configure/installed.py.in:
	* morituri/configure/uninstalled.py.in:
	  Create configure.configure.pluginsdir

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  back to development.

=== release 0.1.3 ===

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* README:
	* RELEASE:
	* configure.ac:
	* morituri.doap:
	  Releasing 0.1.3, "cranes"

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Also remove buggy audio parsers when encoding.
	  Fixes #73.

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Use vbr-quality instead of quality for vbr.  Fixes #94.

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/cue.py:
	* morituri/image/table.py:
	* morituri/image/toc.py:
	  Fix pychecker warnings.

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Add %y to template for year.  Fixes #98.

2012-11-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	* morituri/common/program.py:
	* morituri/image/table.py:
	* morituri/rip/cd.py:
	* morituri/test/test_common_common.py:
	* morituri/test/test_image_toc.py:
	  Handle cases where disc_template and track_template are not in
	  the same directory.

2012-11-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_encode.py:
	  Work around https://bugzilla.gnome.org/show_bug.cgi?id=688625

2012-11-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/common.py:
	  Make tests log.

2012-11-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	* morituri/image/cue.py:
	* morituri/image/toc.py:
	  factor out getRealPath

2012-11-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/toc.py:
	* morituri/test/test_image_toc.py:
	  Add test for getRealPath.  Fix bug found by it for absolute paths.

2012-11-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/table.py:
	* morituri/test/test_image_table.py:
	* morituri/test/test_image_toc.py:
	  Increase coverage.

2012-11-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* doc/Makefile.am:
	  Adapt to changing over to git module for python-command

2012-11-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/task/gstreamer.py:
	  Fix wrong commit made to fix #89.

2012-11-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/offset.py:
	  Don't let an exception on testing an offset slip pass.
	  Fixes #99.

2012-11-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	* morituri/rip/cd.py:
	  Add a number of tries to rip a track.

2012-11-10  Thomas Vander Stichele  <thomas at apestaart dot org>

	* misc/pep8.py (added):
	* Makefile.am:
	  Add pep8 target.

2012-08-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/task/gstreamer.py:
	* morituri/test/test_common_checksum.py:
	  Protect backslashes in names.  Fixes #89.

2012-08-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/drive.py:
	  If cdio.get_devices_with_cap finds a single drive, it returns a
	  str instead of a list.  Work around that bug.  Fixes #102.
	* morituri/test/test_common_drive.py (added):
	* morituri/test/Makefile.am:
	  Add test for it.  Caught a bug in my first implementation, too!

2012-08-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/Makefile.am:
	* morituri/common/checksum.py:
	* morituri/common/encode.py:
	  Add a GstPipelineTask that lets us log.
	  Handle checksumming of small tracks better.

2012-07-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	  Handle EmptyError.

2012-07-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Add encode debug.

2012-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Use a temp var to make code more readable.

2012-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/result/logger.py:
	  Fix logging of AR data

2012-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Tell us which track is not in the db.

2012-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/musicbrainzngs.py:
	  Handle multiple artists correctly.

2012-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Christophe Fergeau <cfergeau@redhat.com)

	* morituri/common/program.py:
	  When morituri finds multiple matches for a given release, it only
	  keeps the releases whose length are the closest to the CD being
	  ripped.

	  However, this currently interacts badly with the --release-id
	  parameter because this duration filtering is done before trying to
	  do the release-id matching. The release that the user has specified
	  may have been removed from the potential matches by the time the
	  release
	  id match is tried.
	  This commit removes the duration filtering when the user explicitly
	  specified a release id. I've observed this bug with the first disc
	  of The Wall (Experience Edition) by the Pink Floyd.
	  Fixes #91.

2012-04-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Christophe Fergeau <cfergeau@redhat.com)

	* morituri/common/program.py:
	  When --release-id is used, we are not making guesses based on the
	  CD lengths, so the message saying that we picked the closest match
	  in duration, which can still trigger, is inappropriate.

2012-01-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* TODO:
	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Add rip cd rip --release-id as an option to select the exact
	  release this disc is a part of.
	  Fixes Radiohead - Pablo Honey and U2 - Achtung Baby

2012-01-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Properly write utf-8 encoded strings to stdout.

2012-01-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Actually return the result from verifyTrack.
	  Debug the cache loading some more.  Make a note for a TODO.

2012-01-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/musicbrainzngs.py:
	  Get the artist credit for a track/album; Fixes Gorky - Gorky.

2012-01-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/common/program.py:
	  Fix/add logging.

2012-01-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri.spec.in:
	  Spec fix.
	* morituri/image/image.py:
	  Log fix.

2011-10-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Remove musicbrainz command.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  Doing a pre-release.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_program.py:
	  Remove use of musicbrainz module.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/Makefile.am:
	  Don't package old musicbrainz test.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/Makefile.am:
	  Hopefully fix both make and make distcheck.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/Makefile.am:
	* morituri/test/morituri.release.3451f29c-9bb8-4cc5-bfcc-bd50104b94f8.json (added):
	* morituri/test/test_common_musicbrainzngs.py (added):
	  Add test for previous bug of a release not having a date.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	* morituri/common/musicbrainzngs.py:
	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Add -R option to rip to record API results for debugging.

2011-10-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/musicbrainzngs.py:
	  Fix case of metadata not having length.
	  Fix case of release not having a date.

2011-10-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/Makefile.am:
	* morituri/common/musicbrainzngs.py:
	* morituri/common/program.py:
	* morituri/extern/Makefile.am:
	  Use musicbrainz NGS for ripping.
	  Can now rip Weezer, the Blue Album, both discs.

2011-10-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	* morituri/common/musicbrainzngs.py (added):
	  Rewrite using python-musicbrainz-ngs.
	  Add rip debug musicbrainzngs command for testing,
	  seems to work on Weezer - Blue Album - disc 2

2011-10-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/Makefile.am:
	* morituri/extern/musicbrainzngs/musicbrainz.py (svn:special):
	* morituri/extern/musicbrainzngs/mbxml.py (svn:special):
	* morituri/extern/musicbrainzngs (added):
	* morituri/extern/musicbrainzngs/mbxml.py (added):
	* morituri/extern/musicbrainzngs/__init__.py (added):
	* morituri/extern/musicbrainzngs/musicbrainz.py (added):
	  Pull in my fork of python-musicbrainz-ngs

2011-10-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/musicbrainz.py:
	* morituri/rip/debug.py:
	  Doc/output fixes.

2011-10-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Adapt to splitup.

2011-10-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Add rip debug musicbrainz command to look up information on
	  disc id's.

2011-10-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/Makefile.am:
	* morituri/common/musicbrainz.py:
	* morituri/common/program.py:
	* morituri/test/test_common_program.py:
	* morituri/test/Makefile.am:
	* morituri/test/test_common_musicbrainz.py (added):
	* morituri/common/musicbrainz.py (added):
	  Split off musicbrainz-specific code.

2011-10-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* TODO:
	* morituri/extern/task/task.py:
	  Instead of chaining next in multi tasks, making the call
	  chain larger (and exceed maximum depth on track 75), schedule
	  it immediately.

2011-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/Makefile.am:
	  Include test .xml responses.

2011-09-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  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.

2011-09-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  Log properly again.
	  Properly set exception when we can't rename the file.

2011-09-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/task/gstreamer.py:
	  Query using time if DEFAULT fails.

2011-09-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Add Musicbrainz command.

2011-09-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  If any track is missing duration, set the whole album duration
	  to 0.

2011-09-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  flacparse is busted in gst-plugins-good 0.10.30 too.

2011-08-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Don't fail if there is no metadata.

2011-08-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/debug.py:
	  Pychecker fixes.

2011-08-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* TODO:
	  Add a note about das capital disc.
	* morituri/test/release.08397059-86c1-463b-8ed0-cd596dbd174f.xml:
	* morituri/test/release.93a6268c-ddf1-4898-bf93-fb862b1c5c5e.xml:
	  Add musicbrainz ws1 results for Das Capital and Ladyhawke.
	* morituri/test/test_common_program.py:
	  Fix typos.
	  Add tests for Ladyhawke and Das Capital duration and parsing.
	* morituri/test/test_image_table.py:
	  Fix according to new algorithm.
	* morituri/test/test_image_toc.py:
	  Get frame length for both cd's.
	* morituri/image/table.py:
	  Add getFrameLength method.  Fix up duration.

2011-08-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Always print MusicBrainz URL.

2011-08-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/release.c7d919f4-3ea0-4c4b-a230-b3605f069440.xml:
	  Add release data for Bettie Serveert, Lamprey
	* morituri/test/test_common_program.py:
	  Add a test for parsing and getting the whole duration.
	* morituri/common/common.py:
	  Add a method to format time.
	* morituri/common/program.py:
	  Add duration to tracks and release metadatas.
	  When there are multiple matches, look up the closest in duration.
	  Make sure that multiple matches closest in duration contain same
	  artist and title.
	  Complain about the other ones.
	* morituri/image/table.py:
	  Add a method to calculate a duration from the table.
	* morituri/test/test_image_table.py:
	  Add a test for it.

2011-08-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Make sure we definitely fail on failed checksum.

2011-08-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* doc/release:
	  Add note on actually running.
	* morituri/common/program.py:
	  Fix when running rip cd rip --unknown

2011-08-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/task/task.py:
	  Also stub out log calls on Runner.

2011-08-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/task/task.py:
	  Also handle error() log calls.

2011-08-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  Make sure exceptions don't prevent the task from chaining up
	  to the parent stop() implementation, giving the runner a chance
	  to actually stop.

2011-08-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/debug.py:
	  Add checksum task for debugging.

2011-08-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/common/common.py:
	* morituri/common/encode.py:
	* morituri/image/image.py:
	* morituri/test/test_common_encode.py:
	  Moved quoteParse.

2011-08-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/Makefile.am:
	* morituri/common/checksum.py:
	* morituri/common/gstreamer.py:
	* morituri/extern/Makefile.am:
	* morituri/extern/task/gstreamer.py:
	* morituri/common/gstreamer.py (added):
	  Extract function to remove audio parsers.
	  Fix up dist.

2011-08-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/extern/task (added):
	* morituri/extern/task/taskgtk.py (added):
	* morituri/extern/task/gstreamer.py (added):
	* morituri/extern/task/task.py (added):
	* morituri/common/taskgtk.py (deleted):
	* morituri/common/gstreamer.py (deleted):
	* morituri/common/task.py (deleted):
	  Move task-related modules into an extern directory so other
	  projects can use them.
	* morituri/common/checksum.py:
	* morituri/common/encode.py:
	* morituri/image/image.py:
	* morituri/program/cdparanoia.py:
	* morituri/program/cdrdao.py:
	* morituri/rip/cd.py:
	* morituri/rip/debug.py:
	* morituri/rip/image.py:
	* morituri/rip/main.py:
	* morituri/rip/offset.py:
	* morituri/test/test_common_checksum.py:
	* morituri/test/test_common_encode.py:
	* morituri/test/test_image_image.py:
	  Adapt.  Tests work.

2011-07-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdrdao.py:
	  Avoid floating point error.

2011-07-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Log which task we are notifying progress on.
	* morituri/common/program.py:
	  Solve a problem where a release does not have an .id,
	  which means it's only half in musicbrainz (artist
	  and title, but no URL to the disc)

2011-07-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdrdao.py:
	  Fix log output.
	  Do progress output while scanning TOC.

2011-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* doc/release:
	  Back to trunk.

=== release 0.1.2 ===

2011-06-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* README:
	* RELEASE:
	* configure.ac:
	* morituri.doap:
	  Releasing 0.1.2, "VCR"

2011-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Use %default in options description.

2011-05-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Ouch, was using the DISC TEMPLATE for the tracks.

2011-05-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_program.py:
	  Add a test for the template in #66.

2011-05-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Templates should have same number of slashes.
	  This avoids #66.
	  (Possibly, it should also be the same directory, or more code
	   should be written to handle that case).
	* morituri/rip/main.py:
	  Catch CommandError.

2011-05-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Create variables for default templates.

2011-05-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_program.py:
	  Add tests for naming of disc output location.

2011-05-29  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Actually remove it if it's good and old.

2011-05-27  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  In -bad the plugin is called audioparsersbad.

2011-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Add debugging about audioparsers removal.

2011-05-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Also remove audioparsers if it's in bad.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  Time for a prerelease.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Remove parsers for current git trunk of good too.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Query for duration and use it in level callback to set progress.
	  Works around F-15 bug where encode progress is not being updated.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/Makefile.am:
	* morituri/rip/main.py:
	* morituri/rip/debug.py (added):
	  Add helper command to debug tasks.
	* morituri/common/encode.py:
	  Add debug.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_encode.py:
	  Use pink-noise as a wave form to make sure it's long enough.
	  Fixes last tests for F-15.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/common/gstreamer.py:
	  Remove audioparsers plugin if it has the known bug.
	  Fixes #64.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Show us when we stop twice.
	* morituri/common/gstreamer.py:
	  Stop on Exceptions.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  Add an EmptyError.
	* morituri/common/checksum.py:
	  Set it when we don't get any frames.
	* morituri/rip/main.py:
	  Catch it and stop ripping if this happens.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  More exception handling and debug.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  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.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_encode.py:
	  Write a non-sine wave so we have an actual flac file that will
	  typefind.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/image.py:
	  Actually set exception so MultiTask tells us what went wrong.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Document and change name of a method.

2011-05-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Add a cvar to stop going to playing.
	* morituri/image/image.py:
	  Convert AudioLengthTask to GstPipelineTask.
	* morituri/test/test_image_image.py:
	  Adapt to new typefind error we run in.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Stop task when we get an exception.
	  Don't make pipeline go to PLAYING if we got an exception
	  before doing so.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Convert TagReadTask to gstreamer.GstPipelineTask and
	  remove lots of duplicate code.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/common/encode.py:
	* morituri/common/gstreamer.py:
	  Move play to base class of GstPipelineTask.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Add a stop method and a stopped overridable handler.
	* morituri/common/checksum.py:
	* morituri/common/encode.py:
	  Adapt to using stopped.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_encode.py:
	  Generate an actual file by spawning gst-launch; otherwise
	  with proper error handling we get an error from wavparse that
	  there is not enough data to typefind.
	* morituri/common/gstreamer.py:
	  Move the gst import to start() and set it as a class attribute.
	  Document methods.
	* morituri/common/encode.py:
	  Convert EncodeTask to a GstPipelineTask.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Add some debug.

2011-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  AccurateRip responses should be treated per track; one response set
	  isn't necessarily from the same pressing.
	  The first response set contains all the highest confidence
	  checksums, and so on in decreasing order.
	  So don't assert about one track having a checksum matching from
	  a different response set.
	  Fixes #5.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	based on code by: Loïc Minier <lool@dooz.org>

	* morituri/rip/Makefile.am:
	* morituri/rip/main.py:
	* morituri/rip/accurip.py (added):
	  Add a rip accurip show command to show the accuraterip information
	  for a given URL.  See #5.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/table.py:
	  Extract one function to write a FILE line.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Ross Burton <ross@burtonini.com>

	* morituri/image/table.py:
	  When writing the .cue file, only write the basename, since
	  the .cue file gets stored in the album directory.
	  Fixes #10.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	  Give a nice error message if cdrdao cannot read the disc.
	  Fixes #62.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  Since stop can be same as start, add + 1 to progress calculation.
	  Fixes #37.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/gstreamer.py:
	  Remove unused imports.
	* morituri/image/image.py:
	  Remove halfbaked code.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Factor out function to write .m3u lines.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Loïc Minier <lool@dooz.org>

	* morituri/rip/cd.py:
	  Don't strip extension of HTOA track.
	  Fixes #50.

2011-05-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/result/logger.py:
	  Always write strftime in C locale.  Fixes second bug
	  mentioned in #49.

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/image/image.py:
	* morituri/test/test_common_checksum.py:
	* morituri/common/gstreamer.py (added):
	  Factor out GstException and GstPipelineTask.

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* misc/morituri-uninstalled:
	  The binary name is rip, so add an option to override.
	  Fixes #46.

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/image.py:
	  Document image subcommand.  Fixes #61.

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/Makefile.am:
	  Package error progress output.  Fixes distcheck on slaves.

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_program_cdparanoia.py:
	  Update expected quality percentage.
	  Was broken since its commit in [432].

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/common/encode.py:
	* morituri/image/table.py:
	* morituri/rip/cd.py:
	* morituri/rip/image.py:
	* morituri/rip/offset.py:
	* morituri/test/test_common_accurip.py:
	* morituri/test/test_common_checksum.py:
	* morituri/test/test_image_cue.py:
	* morituri/test/test_image_table.py:
	  Pychecker fixes.

2011-05-21  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	  Actually raise the exception.
	* morituri/common/task.py:
	  Document interface more clearly.
	* morituri/test/test_common_checksum.py:
	  Use tcommon for test.common

2011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  Don't fail on loading pickle.

2011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Alac does not have merge_tags.  Fixes #15.

2011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	* morituri/common/encode.py:
	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Add action and what args to describe task better.

2011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Add more debug.

2011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	  More debug info: args, version, revision.

2011-05-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/configure/configure.py (svn:keywords):
	  Expand revision.
	* morituri/configure/configure.py:
	  Set it on the revision local.

2011-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  wavenc does not have merge_tags, it seems.
	  So don't call an element a tagger, don't merge tags if there is
	  no tagger, and complain if there is no merge_tags when we think
	  there should be.

2011-03-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  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.

2011-03-22  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/offset.py:
	  When finding the offset, also load and possibly unmount, resolving
	  to the real path for the device.

2011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Debug failing to write tags better.  See #60.

2011-03-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  Extend FileSizeError with an extra message.
	* morituri/rip/offset.py:
	  Print a reasonable warning when we cannot rip with a certain offset.
	  See #57.

2011-03-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/drive.py:
	  Fix typo.  Fixes #59.

2011-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	  Create a GstException to wrap a Gst.GError.
	  Create a base GstPipelineTask class.
	  Use it in Checksum and TRM tasks.
	  Raise and don't proceed to call .paused() when a GstError happens.
	  Should help debug https://bugs.launchpad.net/bugs/735053
	* morituri/test/test_common_checksum.py:
	  Adapt test.

2011-01-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Ross Burton

	* morituri/common/program.py:
	  On compilation albums the album artist is different to the artist.
	  If this is the case, morituri should write both tags.
	  Fixes #43.

2011-01-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/image/table.py:
	* morituri/rip/cd.py:
	  Get CDDB disc id.  Use it to print info when not found on
	  MusicBrainz.

2011-01-01  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Add -U/--unknown option to continue ripping even if the CD is
	  unknown.  Default to False.

2010-12-30  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Add load and eject device.  Do so before and after ripping.

2010-11-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Loïc Minier <lool at debian dot org>

	* examples/ARcalibrate.py:
	* examples/ARcue.py:
	* examples/readdisc.py:
	* morituri/rip/cd.py:
	* morituri/rip/offset.py:
	  s/reponse/response.
	  Fixes #51.

2010-11-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdrdao.py:
	  Add logCategory to CDRDAO tasks.
	  Remove errors from parser, set them publically on task.
	  Properly raise exceptions on data cd's with correct stack origin.

2010-07-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Comment where we got the template variables from.
	* morituri/rip/cd.py:
	  Document the template variables.

2010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  Warn about missing cdparanoia too.

2010-06-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  Add MissingDependencyException.
	* morituri/program/cdrdao.py:
	* morituri/rip/main.py:
	  Use it to warn about missing cdrdao.

2010-06-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Add exception traceback for easier debugging.

2010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri.spec.in:
	  Add requires for python-setuptools since we use parse_version.
	  Fixes #32.

2010-05-23  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Set results by default so that it is set even if we get an
	  exception getting them.
	  Fixes #35.

2010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_image_toc.py:
	  Fix distcheck by writing unicode toc filename in a temp dir.

2010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Log the version at the beginning to help in bug reports.

2010-04-25  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	  Fix another UnicodeEncodeError problem as mentioned in #25.

2010-04-18  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/Makefile.am:
	* morituri/test/jose.toc (added):
	* morituri/test/JoséGonzález.toc (deleted):
	  Rename utf-8 file to a normal file.
	* morituri/test/common.py:
	* morituri/test/test_common_checksum.py:
	* morituri/test/test_common_encode.py:
	* morituri/test/test_image_image.py:
	* morituri/test/test_image_toc.py:
	  Copy the normal file first to the utf-8 filename, if supported.
	  Skip tests that need unicode when we are not in a utf-8 locale.

2010-04-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* doc/release:
	  Back to trunk.

=== release 0.1.1 ===

2010-04-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* README:
	* RELEASE:
	* configure.ac:
	* doc/release:
	* morituri.doap:
	  Releasing 0.1.1, 'Dead'

2010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	* morituri/rip/image.py:
	  Provide status on the retagging.

2010-04-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Peter Oliver

	* morituri/program/cdparanoia.py:
	  Respect umask for encoded files.  Fixes #17.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Before moving the newly tagged file to overwrite the original
	  one, copy over mode.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Commit one missing line from patch in #4 for multi-artist discs.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Peter Oliver

	* morituri/common/program.py:
	  Handle multi-artist releases where track artist is unset.
	  Fixes #14.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/image.py:
	  Fix more utf-8 issues.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/image.py:
	  Remove dead code.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Fix wrong code for checksum comparison.

2010-04-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Rename some vars to start with mbid.  Fix pychecker issues.

2010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Add a retagging command.
	  Add a getMusicBrainz() method.
	  Also store musicbrainz track/album/artist ids.
	  Patch provided by Peter Oliver.  Fixes #4.
	* morituri/rip/cd.py:
	  Use it.
	* morituri/image/image.py:
	  Add a task to retag an image.
	* morituri/rip/image.py:
	  Add a command to retag an image.

2010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Add tasks to read, write, and safely retag flac files.
	* morituri/test/test_common_encode.py:
	  Add tests for this.

2010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	  Style fixes.
	* morituri/common/common.py:
	  Add functions to convert a gst.TagList to a dict and compare them.
	* morituri/common/task.py:
	  Add setAndRaiseException which gives us an appropriate
	  exceptionMessage as if we raised where we called this new function.

2010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  pychecker fix.

2010-04-13  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Add a task to read tags.
	* morituri/test/test_common_encode.py:
	  Add a test.

2010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Add a vbr profile.

2010-04-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/image.py:
	  Don't splitext on inputdir; fixes encoding of directories like
	  Sigur Ros - Takk... (which removed a period)

2010-04-09  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/table.py:
	* morituri/program/cdparanoia.py:
	  Do some 80 character cleanups.

2010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/image.py:
	  Fix problem to encode from files with unicode chars.

2010-04-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  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.

2010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	patch by: Peter Oliver

	* morituri/common/program.py:
	  Allow using sortName for artist/track using %S/%s.
	  Fixes #19.

2010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* doc/release:
	  Document having clean test run.
	* morituri/common/encode.py:
	  Catch and properly stop on gst.QueryError.
	  Don't set peak in stop if we had an error.
	* morituri/test/test_common_encode.py:
	* morituri/test/test_common_renamer.py:
	* morituri/test/test_image_cue.py:
	  Clean up after tests.

2010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	* morituri/image/cue.py:
	  Add logCategory.
	* morituri/image/image.py:
	  If subtasks had an exception, retrigger the exception and stop.

2010-04-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/image.py:
	  Fix AudioLengthTask for the case where we don't have the decoder,
	  by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
	  message.  Properly raise a gst.GError in that case.
	* morituri/common/task.py:
	  Add some debug.
	* morituri/test/test_image_image.py:
	  After this fix, we now catch the TYPE_NOT_FOUND because of an
	  empty stream instead of the later gst.QueryError.
	* morituri/test/test_common_encode.py:
	  Let us know what it is if not a gst.QueryError.

2010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* doc/Makefile.am:
	  Don't put rip.1 manpage in subdir.

2010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/common.py:
	  add quoteParse function to quote properly for gst.parse_launch()
	* morituri/common/checksum.py:
	  Fix single quote problem.
	  use self.setException()
	* morituri/common/encode.py:
	  Fix single quote problem.
	* morituri/image/image.py:
	  Fix single quote problem.
	  Reraise gst.QueryError.
	* morituri/test/test_common_encode.py:
	* morituri/test/test_common_encode.py (added):
	  Add tests for unicode/single/double quote.
	* morituri/test/test_image_image.py:
	* morituri/test/test_common_checksum.py:
	  Add tests for single/double quote.
	* morituri/test/common.py:
	  add twisted-like failUnlessRaises to TestCase that returns
	  the exception, so we can check wrapped exceptions in TaskException.
	  Fixes #16.

2010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Wrap exceptions during tasks in a TaskException, storing the
	  message, for improved error reporting later on.

2010-04-05  Thomas Vander Stichele  <thomas at apestaart dot org>

	* doc/Makefile.am:
	* morituri.spec.in:
	* morituri/extern/Makefile.am:
	  Use help2man.py to generate manpage.

2010-04-04  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	* morituri/common/program.py:
	* morituri/image/image.py:
	* morituri/program/cdparanoia.py:
	* morituri/rip/cd.py:
	* morituri/rip/image.py:
	* morituri/rip/offset.py:
	  Move all gst-using imports inside functions and classes
	  to avoid 'import gst' eating our options.
	  Fixes #12.

2010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* bin/Makefile.am:
	  Install rip as the script.

2010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/Makefile.am:
	  Add missing result.py
	* morituri/test/Makefile.am:
	* morituri/test/test_image_toc.py:
	* morituri/test/JoséGonzález.toc (added):
	* morituri/test/José González.toc (deleted):
	  automake doesn't handle spaces in names, so move it.

2010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* bin/rip.in:
	  Add our PYTHONLIBDIR to sys.path if needed.  Should make this
	  work when doing ./configure; sudo checkinstall make install
	  on e.g. Ubuntu.

2010-03-15  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* bin/rip.in (added):
	* bin/rip (deleted):
	  Generate bin/rip so we can do sys.path stuff.

2010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/offset.py:
	  Add a more complete list of offsets, obtained using misc/offsets.py

2010-03-14  Thomas Vander Stichele  <thomas at apestaart dot org>

	* misc/offsets.py (added):
	  Add a script to calculate list of offsets based on AccurateRip's
	  online database, according to popularity.

2010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/encode.py:
	  Handle utf-8 properly.

2010-02-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Fix a problem with Arid's new album of not having an id.

2010-01-31  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/accurip.py:
	  The AccuRip cache dir could exist without the file; handle that
	  case.

2009-12-28  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  For Various Artists releases, fall back to the release artist if
	  the track artist is None.

2009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/image.py:
	  Add ImageEncodeTask to encode a disk image to a different profile
	  and directory.
	* morituri/common/encode.py:
	  Add lossy encoding profiles for mp3 and vorbis.
	  Rename muxer to tagger since that's what we use it for.
	  Do progress probe after level to make sure we get samples for
	  offsets.
	* morituri/rip/image.py:
	  Add rip image encode command.

2009-10-17  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/José González.toc (added):
	  Add test file for a test.

2009-10-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Add exceptionMessage on Task to store the result of
	  log.getExceptionMessage when the stack is still valid.

2009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	  Back to TRUNK.

=== release 0.1.0 ===

2009-09-26  Thomas Vander Stichele  <thomas at apestaart dot org>

	* NEWS:
	* RELEASE:
	* configure.ac:
	  Releasing 0.1.0, "Youngblood".

2009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	  explicitize keyword args.
	  Break some 80+ lines.

2009-09-19  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/offset.py:
	  Pass device parameter to ReadTrackTask.  Thanks to Alex B for
	  spotting this on my blog.

2009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdparanoia.py:
	* morituri/rip/offset.py:
	  Another unicode fix.

2009-09-12  Thomas Vander Stichele  <thomas at apestaart dot org>

	* HACKING:
	  More unicode notes.
	* morituri/common/program.py:
	* morituri/image/table.py:
	* morituri/image/toc.py:
	* morituri/result/result.py:
	* morituri/rip/cd.py:
	* morituri/test/test_image_toc.py:
	  Further unicode fixes, for options, CD-Text, paths, ...

2009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdrdao.py:
	  Wrap read in an exception handler.
	* morituri/common/task.py:
	  Debug exceptions more.

2009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* HACKING:
	  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.

2009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/cue.py:
	* morituri/image/toc.py:
	* morituri/test/test_image_cue.py:
	* morituri/test/test_image_toc.py:
	  Read input file as utf-8.  Fix logging of paths.
	* morituri/image/image.py:
	  Document and add asserts for unicodeness of paths.
	  Encode path in launch lines as utf-8

2009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Make SyncRunner wrap start() so we correctly handle any
	  exception being thrown.
	  
2009-09-11  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/checksum.py:
	* morituri/test/Makefile.am:
	* morituri/test/test_common_checksum.py (added):
	  Add a check to make sure that checksumming an empty file doesn't
	  hang.  Fix the hang.

2009-09-08  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri.spec.in:
	  Add pycdio as requirement.

2009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/program.py:
	  Fix getting AccurateRip results for albums with a HTOA.
	* morituri/test/Makefile.am:
	* morituri/test/test_common_program.py:
	* morituri/test/silentalarm.result.pickle (added):
	  Add testcase for it, Bloc Party's Silent Alarm.

2009-09-07  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri.spec.in:
	  Update requirements to work around known bugs.

2009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/cd.py:
	  Fix warning against rebuilt package.

2009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* README:
	  Fix up dependencies.
	* morituri.spec.in:
	  Fix dependencies and noarch install location.
	* morituri/common/Makefile.am:
	  Add result.py to dist

2009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* configure.ac:
	* m4/Makefile.am:
	* m4/as-ac-expand.m4 (added):
	  Correctly set installation dir for noarch python files so that it
	  works on 64 bit.

2009-09-06  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdrdao.py:
	  Parse version number.
	* morituri/rip/cd.py:
	  Warn about cdrdao versions with a bug.
	* morituri/test/test_program_cdrdao.py:
	  Test that we can parse the version.

2009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/program/cdrdao.py:
	  Handle errors.  Tested by not having a CD in the drive.

2009-07-02  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/task.py:
	  Document better.
	  Create an ITaskListener interface where we can document.
	  Log some more.

2009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_program.py:
	* morituri/common/program.py:
	  Extract a common method to get textual representation of
	  AccurateRip results, and test it.
	* morituri/rip/cd.py:
	* morituri/rip/image.py:
	  Use the method.

2009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/image/table.py:
	  Fix deprecationwarning for python 2.6

2009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/test_common_program.py (added):
	* morituri/common/program.py:
	  Break verifyImage into two so we can test it.
	  Test it using an AccurateRip result for Luke Haines Is Dead
	  which had a wrongly ripped track 10.


2009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/result/result.py:
	  Document some more.

2009-06-24  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/test/Makefile.am:
	* morituri/test/dBAR-020-002e5023-029d8e49-040eaa14.bin (added):
	  Add AR result for Luke Haines Is Dead disc 1

2009-06-20  Thomas Vander Stichele  <thomas at apestaart dot org>

	* Makefile.am:
	* misc/pycheckerrc:
	* morituri/common/accurip.py:
	* morituri/common/checksum.py:
	* morituri/common/encode.py:
	* morituri/image/table.py:
	* morituri/rip/drive.py:
	  Fix up for pychecker warnings for 2.6
	  Fix rip drive list, which forgot some modules.

2009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/rip/main.py:
	* morituri/rip/image.py (added):
	  Add command to verify an image.
	* morituri/common/program.py:
	* morituri/rip/cd.py:
	  Fix AccurateRip checksum output.

2009-06-16  Thomas Vander Stichele  <thomas at apestaart dot org>

	* morituri/common/drive.py:
	  Really make pycdio and cdio optional.
	* morituri/rip/drive.py:
	* morituri/rip/offset.py:
	  Use drive.getAllDevicePaths()

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.

