diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index 36ff553..0000000 --- a/AUTHORS +++ /dev/null @@ -1 +0,0 @@ -Thomas Vander Stichele diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index f98473d..0000000 --- a/ChangeLog +++ /dev/null @@ -1,3301 +0,0 @@ -2013-01-06 Thomas Vander Stichele - - * morituri/common/config.py: - * morituri/rip/cd.py: - * morituri/rip/drive.py: - Handle missing config better. - Fixes #111. - -2013-01-02 Thomas Vander Stichele - - * morituri/common/config.py: - * morituri/rip/cd.py: - * morituri/test/test_common_config.py: - strip model/release too. - -2012-12-23 Thomas Vander Stichele - - * morituri/common/program.py: - * morituri/rip/cd.py: - feature: add %x for extension to track/disc template. - -2012-12-22 Thomas Vander Stichele - - * 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 - - * morituri/common/musicbrainzngs.py: - * morituri/rip/debug.py: - Also store releaseType for disc metadata. - -2012-12-06 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/rip/debug.py: - Add rip debug tag to debug reading tags. - -2012-12-06 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/common/task.py: - * morituri/program/cdrdao.py: - Factor out a PopenTask base class. - -2012-12-03 Thomas Vander Stichele - - * morituri/common/program.py: - Store rip result after verifying AccurateRip so those results - are stored too. - -2012-12-02 Thomas Vander Stichele - - * morituri/rip/cd.py: - * morituri/result/result.py: - Store versions and encoding profile info in the rip result. - -2012-12-02 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/common/common.py: - Remove migrated classes. - -2012-12-02 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/rip/drive.py: - rip drive list now shows configured read offset if applicable. - -2012-12-02 Thomas Vander Stichele - - * morituri/rip/cd.py: - Use configured read offset for drive if possible. - Fixes #76. - -2012-12-02 Thomas Vander Stichele - - * 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 - - * morituri.spec.in: - * morituri/common/config.py: - Use XDG if we can import xdg. - Fix writing the config. - -2012-12-02 Thomas Vander Stichele - - * morituri/common/drive.py: - * morituri/rip/drive.py: - Extract getDeviceInfo function. - -2012-12-02 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - 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 - - * morituri/program/cdparanoia.py: - Make sure we calculate fractional speed. - -2012-11-25 Thomas Vander Stichele - - 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 - - * morituri.spec.in: - Add plugins directory. - -2012-11-25 Thomas Vander Stichele - - * 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 - - * configure.ac: - * morituri/configure/installed.py.in: - * morituri/configure/uninstalled.py.in: - Create configure.configure.pluginsdir - -2012-11-23 Thomas Vander Stichele - - * configure.ac: - back to development. - -=== release 0.1.3 === - -2012-11-23 Thomas Vander Stichele - - * NEWS: - * README: - * RELEASE: - * configure.ac: - * morituri.doap: - Releasing 0.1.3, "cranes" - -2012-11-23 Thomas Vander Stichele - - * morituri/common/encode.py: - Also remove buggy audio parsers when encoding. - Fixes #73. - -2012-11-23 Thomas Vander Stichele - - * morituri/common/encode.py: - Use vbr-quality instead of quality for vbr. Fixes #94. - -2012-11-23 Thomas Vander Stichele - - * morituri/image/cue.py: - * morituri/image/table.py: - * morituri/image/toc.py: - Fix pychecker warnings. - -2012-11-23 Thomas Vander Stichele - - * morituri/common/program.py: - Add %y to template for year. Fixes #98. - -2012-11-23 Thomas Vander Stichele - - * 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 - - * morituri/test/test_common_encode.py: - Work around https://bugzilla.gnome.org/show_bug.cgi?id=688625 - -2012-11-19 Thomas Vander Stichele - - * morituri/test/common.py: - Make tests log. - -2012-11-19 Thomas Vander Stichele - - * morituri/common/common.py: - * morituri/image/cue.py: - * morituri/image/toc.py: - factor out getRealPath - -2012-11-19 Thomas Vander Stichele - - * 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 - - * morituri/image/table.py: - * morituri/test/test_image_table.py: - * morituri/test/test_image_toc.py: - Increase coverage. - -2012-11-18 Thomas Vander Stichele - - * Makefile.am: - * doc/Makefile.am: - Adapt to changing over to git module for python-command - -2012-11-18 Thomas Vander Stichele - - * morituri/extern/task/gstreamer.py: - Fix wrong commit made to fix #89. - -2012-11-17 Thomas Vander Stichele - - * morituri/rip/offset.py: - Don't let an exception on testing an offset slip pass. - Fixes #99. - -2012-11-11 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - * morituri/rip/cd.py: - Add a number of tries to rip a track. - -2012-11-10 Thomas Vander Stichele - - * misc/pep8.py (added): - * Makefile.am: - Add pep8 target. - -2012-08-12 Thomas Vander Stichele - - * morituri/extern/task/gstreamer.py: - * morituri/test/test_common_checksum.py: - Protect backslashes in names. Fixes #89. - -2012-08-12 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/rip/main.py: - Handle EmptyError. - -2012-07-12 Thomas Vander Stichele - - * morituri/rip/debug.py: - Add encode debug. - -2012-06-24 Thomas Vander Stichele - - * morituri/common/program.py: - Use a temp var to make code more readable. - -2012-06-24 Thomas Vander Stichele - - * morituri/result/logger.py: - Fix logging of AR data - -2012-06-24 Thomas Vander Stichele - - * morituri/common/program.py: - Tell us which track is not in the db. - -2012-04-01 Thomas Vander Stichele - - * morituri/common/musicbrainzngs.py: - Handle multiple artists correctly. - -2012-04-01 Thomas Vander Stichele - - patch by: Christophe Fergeau - - patch by: Christophe Fergeau - - * 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 - - * morituri/rip/debug.py: - Properly write utf-8 encoded strings to stdout. - -2012-01-22 Thomas Vander Stichele - - * 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 - - * morituri/common/musicbrainzngs.py: - Get the artist credit for a track/album; Fixes Gorky - Gorky. - -2012-01-21 Thomas Vander Stichele - - * morituri/common/checksum.py: - * morituri/common/program.py: - Fix/add logging. - -2012-01-21 Thomas Vander Stichele - - * morituri.spec.in: - Spec fix. - * morituri/image/image.py: - Log fix. - -2011-10-29 Thomas Vander Stichele - - * morituri/rip/debug.py: - Remove musicbrainz command. - -2011-10-28 Thomas Vander Stichele - - * configure.ac: - Doing a pre-release. - -2011-10-28 Thomas Vander Stichele - - * morituri/test/test_common_program.py: - Remove use of musicbrainz module. - -2011-10-28 Thomas Vander Stichele - - * morituri/test/Makefile.am: - Don't package old musicbrainz test. - -2011-10-28 Thomas Vander Stichele - - * morituri/extern/Makefile.am: - Hopefully fix both make and make distcheck. - -2011-10-28 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/common/musicbrainz.py: - * morituri/rip/debug.py: - Doc/output fixes. - -2011-10-19 Thomas Vander Stichele - - * morituri/rip/debug.py: - Adapt to splitup. - -2011-10-19 Thomas Vander Stichele - - * morituri/rip/debug.py: - Add rip debug musicbrainz command to look up information on - disc id's. - -2011-10-19 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/test/Makefile.am: - Include test .xml responses. - -2011-09-18 Thomas Vander Stichele - - * 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 - - * morituri/program/cdparanoia.py: - Log properly again. - Properly set exception when we can't rename the file. - -2011-09-15 Thomas Vander Stichele - - * morituri/extern/task/gstreamer.py: - Query using time if DEFAULT fails. - -2011-09-15 Thomas Vander Stichele - - * morituri/common/program.py: - Add Musicbrainz command. - -2011-09-04 Thomas Vander Stichele - - * morituri/common/program.py: - If any track is missing duration, set the whole album duration - to 0. - -2011-09-04 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - flacparse is busted in gst-plugins-good 0.10.30 too. - -2011-08-14 Thomas Vander Stichele - - * morituri/common/program.py: - Don't fail if there is no metadata. - -2011-08-14 Thomas Vander Stichele - - * morituri/common/program.py: - * morituri/rip/debug.py: - Pychecker fixes. - -2011-08-14 Thomas Vander Stichele - - * 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 - - * morituri/common/program.py: - * morituri/rip/cd.py: - Always print MusicBrainz URL. - -2011-08-14 Thomas Vander Stichele - - * 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 - - * morituri/rip/cd.py: - Make sure we definitely fail on failed checksum. - -2011-08-13 Thomas Vander Stichele - - * doc/release: - Add note on actually running. - * morituri/common/program.py: - Fix when running rip cd rip --unknown - -2011-08-07 Thomas Vander Stichele - - * morituri/extern/task/task.py: - Also stub out log calls on Runner. - -2011-08-07 Thomas Vander Stichele - - * morituri/extern/task/task.py: - Also handle error() log calls. - -2011-08-07 Thomas Vander Stichele - - * 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 - - * morituri/rip/debug.py: - Add checksum task for debugging. - -2011-08-05 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/program/cdrdao.py: - Avoid floating point error. - -2011-07-09 Thomas Vander Stichele - - * 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 - - * morituri/program/cdrdao.py: - Fix log output. - Do progress output while scanning TOC. - -2011-06-05 Thomas Vander Stichele - - * configure.ac: - * doc/release: - Back to trunk. - -=== release 0.1.2 === - -2011-06-05 Thomas Vander Stichele - - * NEWS: - * README: - * RELEASE: - * configure.ac: - * morituri.doap: - Releasing 0.1.2, "VCR" - -2011-05-31 Thomas Vander Stichele - - * morituri/rip/cd.py: - Use %default in options description. - -2011-05-31 Thomas Vander Stichele - - * morituri/rip/cd.py: - Ouch, was using the DISC TEMPLATE for the tracks. - -2011-05-30 Thomas Vander Stichele - - * morituri/test/test_common_program.py: - Add a test for the template in #66. - -2011-05-30 Thomas Vander Stichele - - * 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 - - * morituri/rip/cd.py: - Create variables for default templates. - -2011-05-30 Thomas Vander Stichele - - * morituri/test/test_common_program.py: - Add tests for naming of disc output location. - -2011-05-29 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - Actually remove it if it's good and old. - -2011-05-27 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - In -bad the plugin is called audioparsersbad. - -2011-05-25 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - Add debugging about audioparsers removal. - -2011-05-25 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - Also remove audioparsers if it's in bad. - -2011-05-24 Thomas Vander Stichele - - * configure.ac: - Time for a prerelease. - -2011-05-24 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - Remove parsers for current git trunk of good too. - -2011-05-24 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/common/task.py: - Show us when we stop twice. - * morituri/common/gstreamer.py: - Stop on Exceptions. - -2011-05-24 Thomas Vander Stichele - - * 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 - - * morituri/common/task.py: - More exception handling and debug. - -2011-05-24 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/image/image.py: - Actually set exception so MultiTask tells us what went wrong. - -2011-05-24 Thomas Vander Stichele - - * morituri/common/task.py: - Document and change name of a method. - -2011-05-24 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/common/encode.py: - Convert TagReadTask to gstreamer.GstPipelineTask and - remove lots of duplicate code. - -2011-05-23 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/common/encode.py: - Add some debug. - -2011-05-23 Thomas Vander Stichele - - * 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 - - based on code by: Loïc Minier - - * 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 - - * morituri/image/table.py: - Extract one function to write a FILE line. - -2011-05-22 Thomas Vander Stichele - - patch by: Ross Burton - - * 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 - - * morituri/rip/main.py: - Give a nice error message if cdrdao cannot read the disc. - Fixes #62. - -2011-05-22 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - Since stop can be same as start, add + 1 to progress calculation. - Fixes #37. - -2011-05-22 Thomas Vander Stichele - - * morituri/common/gstreamer.py: - Remove unused imports. - * morituri/image/image.py: - Remove halfbaked code. - -2011-05-22 Thomas Vander Stichele - - * morituri/rip/cd.py: - Factor out function to write .m3u lines. - -2011-05-22 Thomas Vander Stichele - - patch by: Loïc Minier - - * morituri/rip/cd.py: - Don't strip extension of HTOA track. - Fixes #50. - -2011-05-22 Thomas Vander Stichele - - * morituri/result/logger.py: - Always write strftime in C locale. Fixes second bug - mentioned in #49. - -2011-05-21 Thomas Vander Stichele - - * 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 - - * misc/morituri-uninstalled: - The binary name is rip, so add an option to override. - Fixes #46. - -2011-05-21 Thomas Vander Stichele - - * morituri/rip/image.py: - Document image subcommand. Fixes #61. - -2011-05-21 Thomas Vander Stichele - - * morituri/test/Makefile.am: - Package error progress output. Fixes distcheck on slaves. - -2011-05-21 Thomas Vander Stichele - - * morituri/test/test_program_cdparanoia.py: - Update expected quality percentage. - Was broken since its commit in [432]. - -2011-05-21 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/common/common.py: - Don't fail on loading pickle. - -2011-05-19 Thomas Vander Stichele - - * morituri/common/encode.py: - Alac does not have merge_tags. Fixes #15. - -2011-05-19 Thomas Vander Stichele - - * 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 - - * morituri/common/task.py: - Add more debug. - -2011-05-19 Thomas Vander Stichele - - * morituri/rip/main.py: - More debug info: args, version, revision. - -2011-05-19 Thomas Vander Stichele - - * morituri/configure/configure.py (svn:keywords): - Expand revision. - * morituri/configure/configure.py: - Set it on the revision local. - -2011-04-08 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/common/encode.py: - Debug failing to write tags better. See #60. - -2011-03-20 Thomas Vander Stichele - - * 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 - - * morituri/rip/drive.py: - Fix typo. Fixes #59. - -2011-03-15 Thomas Vander Stichele - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - patch by: Loïc Minier - - * 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 - - * 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 - - * 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 - - * morituri/program/cdparanoia.py: - Warn about missing cdparanoia too. - -2010-06-19 Thomas Vander Stichele - - * 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 - - * morituri/common/task.py: - Add exception traceback for easier debugging. - -2010-05-23 Thomas Vander Stichele - - * morituri.spec.in: - Add requires for python-setuptools since we use parse_version. - Fixes #32. - -2010-05-23 Thomas Vander Stichele - - * 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 - - * morituri/test/test_image_toc.py: - Fix distcheck by writing unicode toc filename in a temp dir. - -2010-04-25 Thomas Vander Stichele - - * morituri/rip/cd.py: - Log the version at the beginning to help in bug reports. - -2010-04-25 Thomas Vander Stichele - - * morituri/rip/main.py: - Fix another UnicodeEncodeError problem as mentioned in #25. - -2010-04-18 Thomas Vander Stichele - - * 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 - - * configure.ac: - * doc/release: - Back to trunk. - -=== release 0.1.1 === - -2010-04-16 Thomas Vander Stichele - - * NEWS: - * README: - * RELEASE: - * configure.ac: - * doc/release: - * morituri.doap: - Releasing 0.1.1, 'Dead' - -2010-04-15 Thomas Vander Stichele - - * morituri/common/encode.py: - * morituri/rip/image.py: - Provide status on the retagging. - -2010-04-15 Thomas Vander Stichele - - patch by: Peter Oliver - - * morituri/program/cdparanoia.py: - Respect umask for encoded files. Fixes #17. - -2010-04-14 Thomas Vander Stichele - - * morituri/common/encode.py: - Before moving the newly tagged file to overwrite the original - one, copy over mode. - -2010-04-14 Thomas Vander Stichele - - * morituri/common/program.py: - Commit one missing line from patch in #4 for multi-artist discs. - -2010-04-14 Thomas Vander Stichele - - 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 - - * morituri/rip/image.py: - Fix more utf-8 issues. - -2010-04-14 Thomas Vander Stichele - - * morituri/image/image.py: - Remove dead code. - -2010-04-14 Thomas Vander Stichele - - * morituri/common/encode.py: - Fix wrong code for checksum comparison. - -2010-04-14 Thomas Vander Stichele - - * morituri/common/program.py: - Rename some vars to start with mbid. Fix pychecker issues. - -2010-04-13 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/common/encode.py: - pychecker fix. - -2010-04-13 Thomas Vander Stichele - - * 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 - - * morituri/common/encode.py: - Add a vbr profile. - -2010-04-11 Thomas Vander Stichele - - * 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 - - * morituri/image/table.py: - * morituri/program/cdparanoia.py: - Do some 80 character cleanups. - -2010-04-08 Thomas Vander Stichele - - * morituri/rip/image.py: - Fix problem to encode from files with unicode chars. - -2010-04-08 Thomas Vander Stichele - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - * doc/Makefile.am: - Don't put rip.1 manpage in subdir. - -2010-04-05 Thomas Vander Stichele - - * 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 - - * 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 - - * doc/Makefile.am: - * morituri.spec.in: - * morituri/extern/Makefile.am: - Use help2man.py to generate manpage. - -2010-04-04 Thomas Vander Stichele - - * 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 - - * bin/Makefile.am: - Install rip as the script. - -2010-03-15 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/rip/offset.py: - Add a more complete list of offsets, obtained using misc/offsets.py - -2010-03-14 Thomas Vander Stichele - - * 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 - - * morituri/common/encode.py: - Handle utf-8 properly. - -2010-02-28 Thomas Vander Stichele - - * morituri/common/program.py: - Fix a problem with Arid's new album of not having an id. - -2010-01-31 Thomas Vander Stichele - - * morituri/common/accurip.py: - The AccuRip cache dir could exist without the file; handle that - case. - -2009-12-28 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/test/José González.toc (added): - Add test file for a test. - -2009-10-16 Thomas Vander Stichele - - * 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 - - * configure.ac: - Back to TRUNK. - -=== release 0.1.0 === - -2009-09-26 Thomas Vander Stichele - - * NEWS: - * RELEASE: - * configure.ac: - Releasing 0.1.0, "Youngblood". - -2009-09-19 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - explicitize keyword args. - Break some 80+ lines. - -2009-09-19 Thomas Vander Stichele - - * 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 - - * morituri/program/cdparanoia.py: - * morituri/rip/offset.py: - Another unicode fix. - -2009-09-12 Thomas Vander Stichele - - * 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 - - * morituri/program/cdrdao.py: - Wrap read in an exception handler. - * morituri/common/task.py: - Debug exceptions more. - -2009-09-11 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/common/task.py: - Make SyncRunner wrap start() so we correctly handle any - exception being thrown. - -2009-09-11 Thomas Vander Stichele - - * 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 - - * morituri.spec.in: - Add pycdio as requirement. - -2009-09-07 Thomas Vander Stichele - - * 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 - - * morituri.spec.in: - Update requirements to work around known bugs. - -2009-09-06 Thomas Vander Stichele - - * morituri/rip/cd.py: - Fix warning against rebuilt package. - -2009-09-06 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * morituri/program/cdrdao.py: - Handle errors. Tested by not having a CD in the drive. - -2009-07-02 Thomas Vander Stichele - - * morituri/common/task.py: - Document better. - Create an ITaskListener interface where we can document. - Log some more. - -2009-06-24 Thomas Vander Stichele - - * 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 - - * morituri/image/table.py: - Fix deprecationwarning for python 2.6 - -2009-06-24 Thomas Vander Stichele - - * 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 - - * morituri/result/result.py: - Document some more. - -2009-06-24 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/image/cue.py: - Better debug. - -2009-06-09 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/common/program.py: - * morituri/rip/cd.py: - Move HTOA checking to program. - -2009-06-07 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/rip/cd.py: - Massage into 80 characters per line. - Make pycdio/cdio optional. - -2009-06-07 Thomas Vander Stichele - - * morituri/rip/drive.py: - Make pycdio and cdio optional. - -2009-06-07 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/result/result.py: - Add a Logger base class. - -2009-06-05 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/test/common.py: - Add a method for diffing multiline strings. - -2009-06-02 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/rip/cd.py: - Clean up track numbering confusion. - -2009-05-26 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * morituri/image/toc.py: - Add a logName for debugging. - -2009-05-25 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - * morituri/image/image.py: - Correctly chain up to parent __init__ for MultiTasks - -2009-05-24 Thomas Vander Stichele - - * 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 - - * 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 - - * morituri/image/table.py: - Add a version ivar to help with versioning pickled objects. - -2009-05-23 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - Add copy and test CRC's to object. - -2009-05-23 Thomas Vander Stichele - - * morituri/common/Makefile.am: - * morituri/common/drive.py (added): - Add drive module. - -2009-05-23 Thomas Vander Stichele - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * Makefile.am: - * morituri/test/Makefile.am: - Make distcheck work. - -2009-05-22 Thomas Vander Stichele - - * morituri/common/checksum.py: - More pychecker fixes. - -2009-05-22 Thomas Vander Stichele - - * morituri/common/common.py: - * morituri/common/renamer.py: - Pychecker fixes. - -2009-05-22 Thomas Vander Stichele - - * RELEASE: - * misc/pycheckerrc: - * misc/show-coverage.py: - * morituri/image/Makefile.am: - * morituri/program/Makefile.am: - * RELEASE (added): - * morituri/image/Makefile.am (added): - * morituri/program/Makefile.am (added): - * misc/show-coverage.py (added): - * misc/pycheckerrc (added): - more additions - -2009-05-22 Thomas Vander Stichele - - * AUTHORS: - * Makefile.am: - * NEWS: - * TODO: - * autogen.sh: - * configure.ac: - * examples/ARcalibrate.py: - * misc/Makefile.am: - * misc/morituri-uninstalled: - * morituri.spec.in: - * morituri/Makefile.am: - * morituri/common/Makefile.am: - * morituri/common/logcommand.py: - * morituri/extern/Makefile.am: - * morituri/rip/Makefile.am: - * morituri/rip/__init__.py: - * morituri/rip/main.py: - * morituri/test/Makefile: - * morituri/test/Makefile.am: - * configure.ac (added): - * AUTHORS (added): - * morituri.spec.in (added): - * Makefile.am (added): - * morituri/test/Makefile.am (added): - * morituri/extern/Makefile.am (added): - * morituri/common/logcommand.py (added): - * morituri/common/Makefile.am (added): - * morituri/Makefile.am (added): - * morituri/rip (added): - * morituri/rip/__init__.py (added): - * morituri/rip/Makefile.am (added): - * morituri/rip/main.py (added): - * misc/Makefile.am (added): - * misc/morituri-uninstalled (added): - * autogen.sh (added): - * NEWS (added): - Start autotooling. Add a command-line application. - -2009-05-16 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - read all sessions by reading session 9. - * morituri/image/toc.py: - Parse ZERO statements properly. - Also set absolute offsets when we know them from the .toc file. - Properly set audio flag on tracks. - FIXME: probably doesn't work if the .toc does not have lengths. - * morituri/image/table.py: - Add some debug to cddb disc id calculation. - Fix absolutize function, it was going one index too far. - raise ValueError when overriding .absolute with a wrong value. - * examples/readdisc.py: - Show CDDB disc id at the start. - Assert when toc and table have different disc id's (to be fixed) - * morituri/test/test_image_cue.py: - Update for having the table already with absolute values. - * morituri/test/test_image_toc.py: - Add Ladyhawke CDDB test, it has a data track. - -2009-05-16 Thomas Vander Stichele - - * examples/readdisc.py: - Move constants to common - -2009-05-16 Thomas Vander Stichele - - * examples/readdisc.py: - * examples/readhtoa.py: - * examples/readtoc.py: - Rename IndexTable to Table. - -2009-05-16 Thomas Vander Stichele - - * morituri/image/cue.py: - * morituri/image/image.py: - * morituri/image/table.py: - * morituri/image/toc.py: - * morituri/program/cdparanoia.py: - * morituri/program/cdrdao.py: - * morituri/test/test_image_cue.py: - * morituri/test/test_image_table.py: - Rename IndexTable to Table. - -2009-05-16 Thomas Vander Stichele - - * morituri/image/cue.py: - * morituri/image/image.py: - * morituri/image/table.py: - * morituri/image/toc.py: - * morituri/program/cdrdao.py: - * morituri/test/test_image_cue.py: - * morituri/test/test_image_table.py: - Rename ITTrack to Track. - -2009-05-16 Thomas Vander Stichele - - * morituri/common/common.py: - * morituri/image/cue.py: - Use FRAMES_PER_SECOND where appropriate. - -2009-05-16 Thomas Vander Stichele - - * morituri/common/checksum.py: - * morituri/common/common.py: - * morituri/image/image.py: - * morituri/image/table.py: - * morituri/program/cdparanoia.py: - Move constants to common - -2009-05-16 Thomas Vander Stichele - - * examples/readdisc.py: - Get our metadata only from the toc. - -2009-05-16 Thomas Vander Stichele - - * examples/readdisc.py: - Also work for discs without htoa. - -2009-05-16 Thomas Vander Stichele - - * examples/readdisc.py: - Write .m3u file. - -2009-05-15 Thomas Vander Stichele - - * examples/readdisc.py: - Rip HTOA as well. Add disc-template parameter. - -2009-05-15 Thomas Vander Stichele - - * morituri/image/table.py: - Fix a subtle bug in our CDDB disc id calculation. - The length of the audio should be calculated as the delta - between leadout and start already converted (and truncated) - to seconds. - * morituri/test/bloc.cue: - * morituri/test/test_image_toc.py: - Fix up tests for this. - -2009-05-15 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - Fix up track counting so HTOA can be ripped again. - * examples/readhtoa.py: - Fix up example so it works again, tested on Silent Alarm. - -2009-05-15 Thomas Vander Stichele - - * morituri/test/test_image_toc.py: - * morituri/test/bloc.cue (added): - Add an expected .cue file for the bloc party toc. - -2009-05-15 Thomas Vander Stichele - - * morituri/image/toc.py: - Calculate the leadout from the sum of the track lengths. - * morituri/test/breeders.cue: - * morituri/test/cure.cue: - Adapt expected results for DISCID. - * morituri/image/table.py: - Add an assert for hasTOC() when doing .cue() - * morituri/test/test_image_toc.py: - * morituri/test/test_image_cue.py: - absolutize before cue() - -2009-05-15 Thomas Vander Stichele - - * morituri/image/table.py: - Only add DISCID if our table is a TOC (which it isn't - with our current .toc file parsing) - * morituri/test/test_image_cue.py: - * morituri/test/test_image_toc.py: - Fix up tests; testsuite passes again. - -2009-05-15 Thomas Vander Stichele - - * morituri/image/toc.py: - Add some debugging. - -2009-05-15 Thomas Vander Stichele - - * morituri/image/table.py: - Update .cue writing: - - customise program name - - add DISCID - - use counter for FILE lines - - put FILE line before TRACK if track does not have INDEX 00 - Take counter into account for setFile - Fix off-by-one in setFile - * examples/readdisc.py: - Add --track-template. - Pass counter to setFile. - -2009-05-14 Thomas Vander Stichele - - * morituri/image/table.py: - Add CDText writing to .cue() method. - * morituri/image/toc.py: - Add CDText parsing. - * morituri/test/test_image_toc.py: - * morituri/test/breeders.cue (added): - Add a test for cue'ing the breeders' toc. - -2009-05-14 Thomas Vander Stichele - - * morituri/image/table.py: - * morituri/image/toc.py: - Add parsing of ISRC codes. - Add first part of CDTEXT stuff. - * morituri/test/test_image_toc.py: - Add test for converting .toc to .cue - * morituri/test/cure.cue - Add reference for converted cure.toc - -2009-05-10 Thomas Vander Stichele - - * examples/readhtoa.py: - Fix example. - -2009-05-07 Thomas Vander Stichele - - * morituri/image/table.py: - * morituri/test/test_image_table.py: - Correctly calculate MusicBrainz disc id for enhanced cd's. - -2009-05-07 Thomas Vander Stichele - - * morituri/common/task.py: - Log on runners too. - * morituri/program/cdrdao.py: - Abort if output has ERROR by killing and setting an exception. - -2009-05-07 Thomas Vander Stichele - - * examples/readdisc.py: - filter out slashes when deciding on file names. - -2009-05-07 Thomas Vander Stichele - - * morituri/common/task.py: - * morituri/image/image.py: - Remove prints. Describe tasks. - -2009-05-07 Thomas Vander Stichele - - * morituri/common/task.py: - Add an exception ivar for tasks to set an exception on while - running. Make SyncRunner raise it during done() - * morituri/program/cdparanoia.py: - Set an exception if the ripped file doesn't match the expected size - (for example when disc is full) - -2009-05-07 Thomas Vander Stichele - - * morituri/common/common.py: - Set the object when we don't persist. - * examples/readdisc.py: - Small fixes. - -2009-05-06 Thomas Vander Stichele - - * examples/readdisc.py: - Fix up cue file reading. - -2009-05-06 Thomas Vander Stichele - - * examples/readdisc.py: - Add musicbrainz code for disc naming. - -2009-05-06 Thomas Vander Stichele - - * morituri/image/table.py: - * morituri/image/toc.py: - Delete old code. - -2009-05-06 Thomas Vander Stichele - - * morituri/image/toc.py: - * morituri/test/test_image_toc.py: - * morituri/test/test_program_cdrdao.py: - After careful vetting, fix up the expected values after toc parsing. - Fix (untested) INDEX handling. Fix handling of START. - -2009-05-05 Thomas Vander Stichele - - * morituri/image/table.py: - * morituri/test/test_image_table.py: - Implement MusicBrainz disc id. Works for audio-only discs, - have to figure out why it fails for an Enhanced CD like the - Ladyhawke one. - -2009-05-05 Thomas Vander Stichele - - * morituri/image/table.py: - Add logging. - Add methods to clear a table of files, and to absolutize indexes - as long as the source is the same file, and to set a File on a - given index, adjusting all following indexes that match the - duration, and check if the IndexTable has all information for a TOC. - * morituri/image/toc.py: - Add logging. - Use a counter for the source. - Fix up index offset calculation. - * morituri/program/cdrdao.py: - Use a real IndexTable as the result, instead of a TocFile. - * morituri/image/cue.py: - Use a real IndexTable to store tracks. - * morituri/test/test_image_toc.py: - The toc file now has a table which has the tracks. - Fix the tests to adjust for wrong index calculations. - * morituri/test/test_image_cue.py: - * morituri/test/test_image_image.py: - * morituri/image/image.py: - The cue file now has a table which has the tracks. - * morituri/test/test_image_table.py: - Add assertions to make sure when the table can serve as a TOC. - * examples/readdisc.py: - Adjust for changes. Fix up to include AccurateRip results. - First time we can do a complete normal rip including verifying - against AccurateRip results! - -2009-05-05 Thomas Vander Stichele - - * examples/readdisc.py: - * morituri/image/table.py: - * morituri/test/test_image_table.py: - Fix up and deprecate stuff. - -2009-05-04 Thomas Vander Stichele - - * examples/movecue.py: - * examples/readcue.py: - * morituri/image/cue.py: - * morituri/image/image.py: - * morituri/image/toc.py: - * morituri/program/cdrdao.py: - * morituri/test/test_image_cue.py: - * morituri/test/test_image_toc.py: - Cue -> CueFile - TOC -> TocFile - -2009-05-04 Thomas Vander Stichele - - * examples/readdisc.py (added): - Add an example to read a whole disc. Doesn't work yet. - -2009-05-04 Thomas Vander Stichele - - * examples/readhtoa.py: - Fix up readhtoa example. Add offset option. - -2009-05-04 Thomas Vander Stichele - - * examples/ARcalibrate.py: - * examples/readhtoa.py: - * examples/readtoc.py: - * morituri/program/cdrdao.py: - Rename ReadTOCTask to ReadIndexTableTask. - Rename ReadTableTask to ReadTOCTask. - -2009-05-04 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - Convert ReadTableTask to a CDRDAOTask subclass. - * examples/ARcalibrate.py: - * morituri/program/cdparanoia.py: - Adapt. - -2009-05-04 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - Fix up index scanning's progress report. - Add some debugging. - -2009-05-04 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - * morituri/test/test_program_cdrdao.py: - Fix up tests. Use an IndexTable. - -2009-05-04 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - Massage out a base class for running cdrdao. - -2009-05-04 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - * morituri/test/test_program_cdrdao.py (added): - Split out the parser from the task. Test the parser. - -2009-05-04 Thomas Vander Stichele - - * morituri/image/cue.py: - * morituri/image/image.py: - * morituri/image/table.py: - * morituri/program/cdparanoia.py: - * morituri/test/test_image_cue.py: - Move to using a shared IndexTable for everything. - Sadly mixed with a MultiTask rename. - -2009-05-04 Thomas Vander Stichele - - * morituri/common/checksum.py: - Update debugging. Add repr. - -2009-05-04 Thomas Vander Stichele - - * examples/ARcue.py: - Handle case where we have no matching response. - -2009-05-03 Thomas Vander Stichele - - * morituri/common/task.py: - Distinguish more clearly between MultiSeparateTask and - MultiCombinedTask. - -2009-05-03 Thomas Vander Stichele - - * morituri/image/cue.py: - * morituri/test/test_image_cue.py: - Add dumping of .cue files. - -2009-05-03 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - Use a temporary file to rip to. - -2009-05-03 Thomas Vander Stichele - - * examples/readtrack.py: - Allow specifying the track to save. - -2009-05-03 Thomas Vander Stichele - - * morituri/common/task.py: - Make SyncRunner clear previous description/progress task by - tracking longest output given up to now. - -2009-05-03 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - Add a task to read and verify a track. - * examples/readtrack.py: - Use it to clean up code. - * morituri/common/task.py: - describe a MultiTask better. - - -2009-05-03 Thomas Vander Stichele - - * morituri/common/common.py: - Create a Persister class to wrap a possible pickle path. - * examples/trm.py: - Use it. - -2009-05-03 Thomas Vander Stichele - - * morituri/program/cdparanoia.py: - Add table to __init__, so we can correctly calculate cdparanoia's - strange ripping regions. - * examples/ARcalibrate.py: - When we found a positive match on a first track, match all the other - tracks too for confirmation. - -2009-05-03 Thomas Vander Stichele - - * morituri/common/taskgtk.py: - Bug fix. - -2009-05-03 Thomas Vander Stichele - - * morituri/common/task.py: - * morituri/common/taskgtk.py: - Split off GtkProgressRunner in separate module to not import gtk - everywhere. - * examples/ARcalibrate.py: - * examples/ARcue.py: - * examples/gtkchecksum.py: - * examples/trm.py: - Adapt. - -2009-05-03 Thomas Vander Stichele - - * examples/ARcalibrate.py (added): - Add an example that calculates the read offset of your drive - using AccurateRip. - -2009-05-03 Thomas Vander Stichele - - * morituri/program/cdrdao.py: - Add a task to read the Table. - -2009-05-02 Thomas Vander Stichele - - * morituri/common/task.py: - * morituri/image/image.py: - Add some debugging. - -2009-05-01 Thomas Vander Stichele - - * examples/readhtoa.py (added): - Add an example that detects and rips the Hidden Track One Audio. - -2009-05-01 Thomas Vander Stichele - - * examples/readtoc.py: - * morituri/program/cdrdao.py (added): - Move the ReadTocTask to the new cdrdao module. - -2009-05-01 Thomas Vander Stichele - - * examples/readtrack.py: - * morituri/program/cdparanoia.py: - Move ReadTrackTask to cdparanoia module. - -2009-05-01 Thomas Vander Stichele - - * examples/readtrack.py (added): - Add an example that reads a track using cdparanoia. - -2009-05-01 Thomas Vander Stichele - - * morituri/test/cdparanoia.progress (added): - * morituri/test/test_program_cdparanoia.py (added): - * morituri/program/__init__.py (added): - * morituri/program/cdparanoia.py (added): - Add a module to wrap cdparanoia. Add a test for parsing - the progress report output. - -2009-05-01 Thomas Vander Stichele - - * morituri/common/checksum.py: - Debug fixes. - -2009-05-01 Thomas Vander Stichele - - * morituri/common/common.py: - Create some common functions to parse MSF and back. - * morituri/image/toc.py: - Use it here. - -2009-05-01 Thomas Vander Stichele - - * examples/trm.py: - Allow loading and saving fingerprints from a pickle. - -2009-05-01 Thomas Vander Stichele - - * morituri/image/toc.py: - * morituri/test/test_image_toc.py: - * morituri/test/bloc.toc (added): - Fix up .toc parsing to correct index 0 behaviour. - Add Bloc Party's Silent Alarm .toc file to test HTOA. - -2009-05-01 Thomas Vander Stichele - - * examples/readtoc.py: - Update to work on my desktop. - -2009-05-01 Thomas Vander Stichele - - * morituri/common/task.py: - Make task subclass log.Log - -2009-05-01 Thomas Vander Stichele - - * morituri/common/log.py: - Add external log module and use it. - -2009-04-29 Thomas Vander Stichele - - * morituri/test/cure.toc (added): - Add an example .toc file for the test. - -2009-04-28 Thomas Vander Stichele - - * examples/readtoc.py: - Extract and print TOC. - -2009-04-28 Thomas Vander Stichele - - * morituri/test/test_image_toc.py (added): - * morituri/image/toc.py (added): - Add first stab at .toc parsing. - -2009-04-28 Thomas Vander Stichele - - * examples/readtoc.py: - get errors from output too. - -2009-04-28 Thomas Vander Stichele - - * morituri/image/image.py: - * morituri/image/table.py: - * morituri/test/test_image_image.py: - * morituri/test/test_image_table.py: - Rename toc.TOC to table.Table - -2009-04-28 Thomas Vander Stichele - - * morituri/test/test_image_table.py (added): - * morituri/image/table.py (added): - * morituri/test/test_image_toc.py (deleted): - * morituri/image/toc.py (deleted): - Move files around in preparation for the .toc file parsing. - -2009-04-26 Thomas Vander Stichele - - * examples/movecue.py (added): - Add a script that moves a .cue file in its corresponding directory. - -2009-04-26 Thomas Vander Stichele - - * morituri/test/kanye.cue (added): - Add a cue test with mixed mode. - * morituri/image/cue.py: - * morituri/test/test_image_cue.py: - Handle it properly. - -2009-04-25 Thomas Vander Stichele - - * morituri/image/cue.py: - getRealPath should be here, it doesn't need anything outside - the .cue file - * morituri/image/image.py: - Proxy it here. - -2009-04-25 Thomas Vander Stichele - - * morituri/common/checksum.py: - Add some debugging. - * morituri/test/test_image_image.py: - Run less verbose. - -2009-04-25 Thomas Vander Stichele - - * morituri/common/task.py: - Allow a SyncRunner to be constructed with verbose too. - Separate a 'running' verbose mode from that. - Fixes unwanted test output. - * morituri/test/test_image_image.py: - Run without verbosity. - -2009-04-25 Thomas Vander Stichele - - * morituri/test/test_image_image.py: - Fix name. - -2009-04-25 Thomas Vander Stichele - - * morituri/test/test_common_renamer.py (added): - * morituri/common/renamer.py (added): - Add a way of doing transactional file renames, as well as their - metafile updates. - -2009-04-21 Thomas Vander Stichele - - * morituri/common/task.py: - Add a 'described' method so listeners can get proper notification - of description changes, and update their description in between - progress changes. - Add a MultiCombinedTask that reports on progress over all tasks - combined. - * examples/trm.py: - Add a playlist option to the example. Still needs to store results - to pickles, preferably after each completed task. - * morituri/common/checksum.py: - Add audioconvert to make sure we can trm ogg files. - -2009-04-20 Thomas Vander Stichele - - * morituri/common/task.py: - * morituri/image/image.py: - Move MultiTask to the task module. - -2009-04-20 Thomas Vander Stichele - - * morituri/common/checksum.py: - Add a task to calculate a trm fingerprint. - * examples/trm.py (added): - Add an example. - Strangely enough it starts burstily, doing 10% directly, halting, - then progressing quickly, - -2009-04-20 Thomas Vander Stichele - - * examples/ARcue.py: - Fix a bug in the gtk example. - -2009-04-20 Thomas Vander Stichele - - * examples/readtoc.py: - Read the toc using cdrdao. Now sets progress based on which - frame it is on. - -2009-04-20 Thomas Vander Stichele - - * morituri/common/task.py: - Add a __main__ example using DummyTask. - -2009-04-19 Thomas Vander Stichele - - * morituri/common/task.py: - Make sure we also show progress when it's 0%, at the start. - -2009-04-19 Thomas Vander Stichele - - * morituri/image/cue.py: - Use names for matches in regexps. - -2009-04-19 Thomas Vander Stichele - - * examples/readtoc.py (added): - Add an example to read the TOC, not finished yet. - -2009-04-19 Thomas Vander Stichele - - * morituri/extern (added): - * morituri/extern/__init__.py (added): - * morituri/extern/asyncsub.py (added): - Add extern module; add asynchronous subprocess Popen from - http://code.activestate.com/recipes/440554/ - -2009-04-15 Thomas Vander Stichele - - * examples/gtkchecksum.py: - * morituri/common/checksum.py: - Final crc->checksum fixes. - -2009-04-15 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/common/checksum.py: - * morituri/image/image.py: - * morituri/image/toc.py: - * examples/gtkchecksum.py (added): - * examples/gtkcrc.py (deleted): - More crc->checksum changes. - -2009-04-15 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/common/checksum.py: - * morituri/image/image.py: - * morituri/test/test_image_image.py: - Change crc to checksum everywhere. - -2009-04-15 Thomas Vander Stichele - - * morituri/image/image.py: - * morituri/image/toc.py: - * morituri/common/checksum.py (added): - * morituri/common/crc.py (deleted): - Rename crc to checksum, because AccurateRip checksums are not CRC's. - -2009-04-15 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/image/image.py: - * morituri/test/test_image_image.py: - Make everything use TOC for the id's. - -2009-04-15 Thomas Vander Stichele - - * morituri/image/image.py: - Refactor to use TOC class. - * morituri/image/toc.py: - Fully document. - -2009-04-15 Thomas Vander Stichele - - * morituri/test/test_image_toc.py (added): - * morituri/image/toc.py (added): - Add an abstraction for a TOC. - Take data tracks into account correctly for CDDB and AccurateRip - disc ID's. - -2009-04-15 Thomas Vander Stichele - - * morituri/image/image.py: - * morituri/test/test_image_image.py: - AccurateRip binary files actually contain multiple responses, so - parse all of them. - * examples/ARcue.py: - Handle case of not having a response, and having multiple responses. - -2009-04-14 Thomas Vander Stichele - - * morituri/common/crc.py: - Actually return the CRC when checking frame 5. - * morituri/test/test_image_image.py: - Update test for this fix. - -2009-04-13 Thomas Vander Stichele - - * morituri/image/image.py: - Also look for audio file basename relative to cue file. - -2009-04-13 Thomas Vander Stichele - - * examples/ARcue.py: - Make output a bit nicer, mentioning whether tracks were - accurately ripped. - -2009-04-13 Thomas Vander Stichele - - * morituri/image/image.py: - Add an object to parse the response of AccurateRip. - * morituri/test/test_image_image.py: - * morituri/test/dBAR-011-0010e284-009228a3-9809ff0b.bin (added): - Add a test for it, based on my Kings Of Leon CD. - -2009-04-13 Thomas Vander Stichele - - * morituri/image/image.py: - Add the 150 frames for the leadin only to the CDDB calculation. - Add methods to calculate AccurateRip id's and URL. - * morituri/test/test_image_image.py: - Add tests for it. - * examples/ARcue.py: - Show AccurateRip URL. - -2009-04-12 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/common/crc.py: - * morituri/image/image.py: - * morituri/test/test_image_image.py: - Calculate CDDB disc id. - Tested on my Kings Of Leon CD. - -2009-04-12 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/image/image.py: - * morituri/test/test_image_image.py: - Add a task to verify a disk image, which also calculates - track lengths for tracks the cue file doesn't know the length of. - -2009-04-12 Thomas Vander Stichele - - * examples/ARcue.py: - Add option to run either command-line or gtk. - -2009-04-12 Thomas Vander Stichele - - * morituri/image/image.py: - Create a MultiTask base class, and make AudioRipCRCTask - use it. - -2009-04-12 Thomas Vander Stichele - - * morituri/image/image.py: - * morituri/test/test_image_image.py: - Add a task for calculating frame length of an audio file. - Add a test for it. - -2009-04-12 Thomas Vander Stichele - - * morituri/common/task.py: - Schedule the start from the main loop, otherwise the - task might complete before we're in the main loop, - and then the loop.quit() doesn't work. - -2009-04-12 Thomas Vander Stichele - - * examples/ARcue.py: - * examples/gtkcrc.py: - Rework both examples to look more similar. - -2009-04-12 Thomas Vander Stichele - - * examples/gtkcrc.py: - * morituri/common/task.py: - Move the gtk-based progress bar to task. - -2009-04-12 Thomas Vander Stichele - - * examples/gtkcrc.py: - * morituri/common/crc.py: - * morituri/common/task.py: - * morituri/image/image.py: - Add a 'schedule' call to the TaskRunner class, so that we can - abstract things like gobject.timeout_add and reactor.callLater - Pass the runner to the task in Task.start() so a task can call - schedule. - -2009-04-12 Thomas Vander Stichele - - * morituri/common/task.py: - Update the docs. - -2009-04-12 Thomas Vander Stichele - - * morituri/test/test_image_image.py (added): - Add tests for AudioRip CRC'ing images. - -2009-04-11 Thomas Vander Stichele - - * morituri/test/track-separate.cue (added): - * morituri/test/track.flac (added): - * morituri/test/Makefile (added): - * morituri/test/track-single.cue (added): - Add a simple 10 frame flac file, and two .cue files - using it. - -2009-04-11 Thomas Vander Stichele - - * morituri/image/image.py: - If paths are relative, make them relative to cue file. - -2009-04-11 Thomas Vander Stichele - - * morituri/common/task.py: - clear with whitespace. - -2009-04-11 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/common/task.py: - * morituri/image/image.py (added): - Add an object for handling an Image based on a .cue file. - Create a Task for CRC'ing the whole Image. - Make the example use this new task instead. - -2009-04-11 Thomas Vander Stichele - - * examples/gtkcrc.py: - * morituri/common/task.py: - Add task object to listener interface methods. - -2009-04-11 Thomas Vander Stichele - - * morituri/common/task.py: - Move methods around. - -2009-04-11 Thomas Vander Stichele - - * examples/ARcue.py: - * examples/gtkcrc.py: - * morituri/common/crc.py: - * morituri/common/task.py: - Split out generic task/runner from CRC tasks. - -2009-04-11 Thomas Vander Stichele - - * morituri/common/crc.py (added): - Copy from task.py before splitting. - -2009-04-11 Thomas Vander Stichele - - * examples/gtkcrc.py: - * morituri/common/task.py: - Don't block the main loop by infinitely scheduling - set_state. - -2009-04-11 Thomas Vander Stichele - - * examples/ARcue.py: - * examples/gtkcrc.py: - * morituri/common/task.py: - Make a real Task interface and use it. - Make runners reusable for multiple tasks. - gtkcrc.py seems to be blocking updates however. - -2009-04-11 Thomas Vander Stichele - - * morituri/test (added): - * morituri/test/test_image_cue.py (added): - * morituri/test/kings-single.cue (added): - * morituri/test/__init__.py (added): - * morituri/test/kings-separate.cue (added): - Add test suite. Add Kings Of Leon cue files. - -2009-04-11 Thomas Vander Stichele - - * examples/ARcue.py: - Error out when the file doesn't exist. - * morituri/common/task.py: - Drag the lake. - Clean up prints. - -2009-04-11 Thomas Vander Stichele - - * morituri/common/task.py: - Remove queue to avoid race. - Remove prints. - Clean up debug. - Update progress after handling buffers. - -2009-04-05 Thomas Vander Stichele - - * morituri/common/task.py: - Introduce constants for FRAMES_PER_DISC_FRAME - * examples/ARcue.py: - Use the constant. - Get the CRC right for the last track too. - -2009-03-26 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/common/task.py: - Use an adapter to assemble CD frames. - Take into account special rules for first and last track. - Mention some bugs. - Remember to drag the lake from the task. - -2009-03-22 Thomas Vander Stichele - - * examples/ARcue.py: - * morituri/common/task.py: - First version that seems to get some AccurateRip checksums right. - -2009-02-28 Thomas Vander Stichele - - * morituri/image/cue.py: - publicize CueFile.tracks - Add a method to get track lengths - * examples/readcue.py: - Use it. - -2009-02-28 Thomas Vander Stichele - - * morituri/common/task.py (added): - Add a task abstraction. - diff --git a/HACKING b/HACKING index 586a564..8a9c5a3 100644 --- a/HACKING +++ b/HACKING @@ -1,13 +1,32 @@ style guide ----------- -To avoid confusion: +Where possible when writing new code, try to stay as PEP8 compliant as possible. +We understand that large portions of the codebase are not, but part of our +ongoing efforts is to clean up whipper. - - cuefile is used for the CueFile object, which wraps/parses an existing .cue - file on disk - - tocfile: same - - toc: table of contents of a CD; instance of Table +major data structures +--------------------- +- image.table.Track: A list of track properties, including a list of indexes, + the isrc, cdtext, pre-emphasis flag, track number, and track type (audio + or data) + +- image.table.Index: A list of track index properties, including the track's path, + relative and absolute offsets within the track & disc, respectively, as + well as the track number and counter. + +- image.table.Table: An ordered list of Track objects, with their leadouts, + cdtext, and catalog numbers. + +- image.cue.CueFile: Generates an image.table.Table from a .cue file from an + existing rip. + +- image.toc.TocFile: Generates an image.table.Table from a .toc file generated + by `cdrdao read-toc`. + +notes +----- test: single rip of kings of leon - only by the night @@ -41,8 +60,13 @@ CDROMS PLEXTOR CD-R PX-W8432T Read offset of device is: 355. -Test discs +test discs ---------- +Julie Roberts - Julie Roberts: cdparanoia paranoid mode has a false positive + jitter correction and silently rips the incorrect track. ripping with + -Z rips the correct track. +Rush - Test for Echo: has 31 frames of silence in the first track's pregap, + test for HTOA detection regressions. The Strokes - Someday (promo): has 1 frame silence marked as SILENCE The Pixies - Surfer Rosa/Come on Pilgrim: has pre-gap, and INDEX 02 on TRACK 11 Florence & The Machine - Lungs: data track diff --git a/COPYING b/LICENSE similarity index 100% rename from COPYING rename to LICENSE diff --git a/NEWS b/NEWS deleted file mode 100644 index e3c9dac..0000000 --- a/NEWS +++ /dev/null @@ -1,212 +0,0 @@ -This is morituri 0.2.3, "moved" - -Coverage in 0.2.3: 68 % (2058 / 3019) - -Bugs fixed in 0.2.3: - -in github: -- 81: Show morituri version in cue and update TODO. -- 78: Use standard AM_PATH_PYTHON rather than broken AS_PATH_PYTHON. -- 77: Save MusicBrainz DiscID to tags. -- 74: Support dev on Eclipse and Pydev by .gitignoring two project files. -- 68: Also show the MusicBrainz lookup ID when retagging. -- 59: EN DASH in album title -- 56: image verify fails -- 53: template default for MusicBrainz miss -- 52: Makefile.am: error: required file './README' not found -- 43: README: slight markup modifications to show formatted on github start page -- 42: update lame mp3 profiles for gstreamer -- 41: "rip offset verify" subcommand not found -- 40: 0.2.2 tarball broken -- 39: Run $PYTHON, not python - -in trac: -- 148: Makefile error compiling 0.2.2 -- 45: lame element is deprecated, should use 'lamemp3enc' instead -- 144: Building out of git fails on Fedora 19 -- 147: problems with 2.2 and 2.1 on Ubuntu 13.04 2.0 is fine tho -- 151: Morituri not finding my drive -- 152: UnicodeEncodeError: 'ascii' codec can't encode characters in position 53-59: ordinal not in range(128) - -Features added in 0.2.3: - -- fixed non-01 index offsets -- add new debug command, rip debug resultcache cue -- use newer lamemp3enc element for mp3 encoding -- fixed rip image verify command - -Coverage in 0.2.2: 67 % (1972 / 2904), 109 python tests - -Bugs fixed in 0.2.2: - -in github: -- 38: No matching offset found -- 35: 'rip cd info' should not eject the disc -- 34: Use track instead of the release artist MBID for the 'Musicbrainz artist ID' -- 33: "rip offset find" fails to initialise program.Program -- 19: Set album artist tag - -Features added in 0.2.1: - -- added "%X" template variable for uppercase filename extension -- added rip cd info -- added storing catalog number and barcode -- disambiguate releases with same name but different catno/barcode -- use all but last track to find offset -- add support to filter path names for better file system support -- add config options for path filtering -- fixes for older pyxdg and some versions of pycdio - -Bugs fixed in 0.2.1: - -in trac: -- 44: Optionally strip special characters from file names -- 121: ImportError: No module named CDDB -- 126: pycdio is no more optional : pkg_resources.DistributionNotFound: pycdio -- 135: rip drive analyze report "Cannot analyze the drive. Is there a CD in it?" when not able to defeat audio cache -- 137: pycdio returns an error when analyzing drive -- 138: Error when trying to rip with pycdio .19 -- 124: Checking of runtime dependencies - -in github: -- 31: Cryptic error message if xdg module is too old -- 30: AttributeError: Values instance has no attribute 'unknown' -- 26: Convert values returned from pycdio to str (workaround for upstream bug) -- 24: Filenames from musicbrainz may contain invalid characters for windows filesystems -- 23: Convert drive path from unicode to str when calling cdio.Device (pycdio 0.19 / Arch Linux) -- 22: Compare AccurateRip to num tracks -1, as last track not being checked -- 21: break up logger line -- 18: Crash if no path specified for '-O' option -- 17: Use XDG cache directory -- 16: Work with older versions of python-xdg -- 14: Use with statement to open files -- 13: Use os.path.join instead of hardcoded paths. -- 11: Ignore bash-compgen, to clean up git-status. -- 9: Ask which release to use if DiscID returns several matches -- 8: abort if invalid logger specified -- 7: Warn if no offset specified and no stored offset found/pycdio not available -- 6: Add "%X" template variable for uppercase filename extension. -- 3: (Optional) dependency on cddb should be documented -- 2: No module named moap.util -- dependency shoud be documented -- 1: No module named log -- use of submodules should be documented - -Features added in 0.2.0: - -- added plugins system for logger -- added rip cd rip --logger to specify logger -- added reading speed, cdparanoia and cdrdao version to logger -- added rip drive analyze to detect whether we can defeat audio cache behaviour -- store drive offsets and cache defeating in config file -- rip drive list shows configured offset and audio cache defeating -- added rip image retag --release-id to specify the release id to tag with -- added %r/%R for release type to use in track/disc template -- added %x for extension to release template - -Bugs fixed in 0.2.0: - -- 89: Fails to rip track with \ in its name -- 105: Backslash in track names causes "Cannot find file" during rip -- 108: Unable to find offset / rip -- 109: KeyError when running "rip offset find" -- 111: Python traceback when config has no read offset for CD -- 76: morituri should allow for a configuration file -- 96: rip image retag: allow specification of release ID -- 107: Backslash in track name confuses AR step -- 112: add MusicBrainz lookup URL to generated logfile - -Coverage in 0.1.3: 60 % (1716 / 2825), 85 python tests - -Features added in 0.1.3: - -- shorten really long file names if needed -- support multi-disc ripping -- add %y for release year in templates -- added rip cd rip --release-id option to select the exact release -- allow track and disc templates to create files in different directories -- work out relative paths from cue/m3u files to audio files - -Bugs fixed in 0.1.3: - -- 77: Unable to find solution to UTF-8 problem -- 93: Unable to choose if there are more than one matching CD -- 67: unable to rip multi-cd-sets correctly -- 73: rip image breaks with "query failed" -- 78: Could not create encoded file -- 84: Error when checksumming extremely short tracks -- 91: --release-id does not work for Pink Floyd - The Wall (Experience Edition) (Disc 1) -- 94: mp3vbr uses quality=0 instead of vbr-quality=0 -- 95: Discs with multiple media not correctly identified. -- 99: rip offset find fails with "UnboundLocalError: local variable 'archecksum' referenced before assignment" -- 102: Unable to run without -d option -- 98: Year of release in templates - -Coverage in 0.1.2: 61 % (1683 / 2755), 65 python tests - -Features added in 0.1.2: - -- UTF-8/unicode handling fixes -- improved error handling -- ignore tags for alac and wav -- work around GStreamer flacparse bugs -- change how paths get referenced in .cue files -- properly interpret AccurateRip results; no more assertions on unexpected - ordering of results -- add debug command - -Bugs fixed in 0.1.2: - -- 5: AccurateRip Error on Arctic Monkeys disc -- 10: pathnames in log and cue -- 15: AttributeError: '__main__.GstWavEnc' object has no attribute 'merge_tags' -- 24: nasty exception when cdrdao is missing -- 25: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 21: ordinal not in range(128) -- 32: Add python-setuptools as Requires in specfile -- 37: rip fails on a hidden track of single sector (or 0?) length -- 38: morituri dies trying to construct the cue file for a number of CDs -- 43: Set the album artist tag -- 46: running uninstalled: morituri-trunk - no bash completion file -- 49: Doesn't encode UTF-8 HTOA track name properly -- 50: Bogus extension stripping of HTOA track in .m3u -- 64: always failing after ripping first track -- 35: UnboundLocalError: local variable 'results' referenced before assignment -- 61: 'rip image --help' should specify that it's intended to work with .cue files -- 62: Crash if no disc in drive -- 51: Typos - s/reponses/responses -- 59: Typo in 'rip drive list' output - -Coverage in 0.1.1: 64 % (1575 / 2440), 61 python tests - -Features added in 0.1.1: - -- added 'rip image encode' command to encode an image to a lossy codec. -- provided lossy codec profiles for vorbis, mp3, and mp3vbr -- added a complete list of known drive offsets from AccurateRip -- added a generated man page -- better exception handling in tasks -- tag audio files with musicbrainz id's -- added 'rip image retag' command to retag audio files in an image - -Bugs fixed in 0.1.1: - -- 11: AccurateRip failure on similar URL -- 12: morituri: 'rip -h' shows gstreamer help, not morituri help, but 'rip help' works fine. -- 14: AttributeError: 'NoneType' object has no attribute 'name' -- 16: Fatal error passing unescaped unicode strings to GStreamer -- 17: Incorrect file permissions -- 19: Use sortname in filenames - -Coverage in 0.1.0: 62 % (1348 / 2150), 49 python tests - -Features added in 0.1.0: - -- support for MusicBrainz for metadata lookup -- support for AccurateRip verification -- detects sample read offset of drives -- performs test and copy rip -- detects and rips Hidden Track One Audio -- templates for file and directory naming -- support for lossless encoding only for now -- tagging using GStreamer -- for now, only a command line client (rip) is shipped - - diff --git a/RELEASE b/RELEASE deleted file mode 100644 index 01657df..0000000 --- a/RELEASE +++ /dev/null @@ -1,67 +0,0 @@ -morituri is a CD ripper aiming for accuracy over speed. -morituri runs on Linux and possibly other Unix-based systems. -Its features are modeled to compare with Exact Audio Copy on Windows. -For more information, see http://thomas.apestaart.org/morituri/trac/ - -This is morituri 0.2.3, "moved" - -Coverage in 0.2.3: 68 % (2058 / 3019), 106 python tests - -Bugs fixed in 0.2.3: - -in github: -- 81: Show morituri version in cue and update TODO. -- 78: Use standard AM_PATH_PYTHON rather than broken AS_PATH_PYTHON. -- 77: Save MusicBrainz DiscID to tags. -- 74: Support dev on Eclipse and Pydev by .gitignoring two project files. -- 68: Also show the MusicBrainz lookup ID when retagging. -- 59: EN DASH in album title -- 56: image verify fails -- 53: template default for MusicBrainz miss -- 52: Makefile.am: error: required file './README' not found -- 43: README: slight markup modifications to show formatted on github start page -- 42: update lame mp3 profiles for gstreamer -- 41: "rip offset verify" subcommand not found -- 40: 0.2.2 tarball broken -- 39: Run $PYTHON, not python - -in trac: -- 148: Makefile error compiling 0.2.2 -- 45: lame element is deprecated, should use 'lamemp3enc' instead -- 144: Building out of git fails on Fedora 19 -- 147: problems with 2.2 and 2.1 on Ubuntu 13.04 2.0 is fine tho -- 151: Morituri not finding my drive -- 152: UnicodeEncodeError: 'ascii' codec can't encode characters in position 53-59: ordinal not in range(128) - -Features added in 0.2.3: - -- fixed non-01 index offsets -- add new debug command, rip debug resultcache cue -- use newer lamemp3enc element for mp3 encoding -- fixed rip image verify command - - -Bugs fixed in 0.2.2: - -in github: -- 38: No matching offset found -- 35: 'rip cd info' should not eject the disc -- 34: Use track instead of the release artist MBID for the 'Musicbrainz artist ID' -- 33: "rip offset find" fails to initialise program.Program -- 19: Set album artist tag - - -morituri 0.2.3 is brought to you by: - -Thomas Vander Stichele -dioltas -Frederik "Freso" S. Olesen -Jens Taprogge -Jim DeLaHunt -Jonas Smedegaard -Michał Górny -Nicolas Cornu -Samantha Baldwin -Tobias Megies -Tuomo Lempiäinen -Velo Superman diff --git a/TODO b/TODO index 7758d5d..9814e7d 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,9 @@ TODO: +Please see https://github.com/JoeLametta/whipper/milestones for further +TODO items; this file exists only to have contents individually removed +eventually, not to be continually updated. + EASY - self.error() invokes exit() which is bad for a gui