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.
Actually raise the exception.
* morituri/common/task.py:
Document interface more clearly.
* morituri/test/test_common_checksum.py:
Use tcommon for test.common
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.
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.
* 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.
* 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.
Add a retagging command.
Add a getMusicBrainz() method.
* 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.
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.
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.
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.
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.