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!
* morituri/common/program.py:
When morituri finds multiple matches for a given release, it only
keeps the releases whose length are the closest to the CD being
ripped.
However, this currently interacts badly with the --release-id
parameter because this duration filtering is done before trying to
do the release-id matching. The release that the user has specified
may have been removed from the potential matches by the time the
release
id match is tried.
This commit removes the duration filtering when the user explicitly
specified a release id. I've observed this bug with the first disc
of The Wall (Experience Edition) by the Pink Floyd.
Fixes#91.
* morituri/common/program.py:
When --release-id is used, we are not making guesses based on the
CD lengths, so the message saying that we picked the closest match
in duration, which can still trigger, is inappropriate.
* 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
* 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.
* 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
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.
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.
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)