Commit Graph

63 Commits

Author SHA1 Message Date
Samantha Baldwin
976e1bdca2 remove configure.configure, use __version__, remove getRevision() (#94)
* remove configure.configure, use __version__, remove getRevision()

* remove empty configure/ directory

* remove morituri.configure imports
2016-12-31 16:41:18 +01:00
Samantha Baldwin
d1ed80d62a argparse & logging (#92)
* introduce logcommand.Lager, Whipper(); use argparse for whipper image commands, stub logging

* update Lager docstring to mention config.Config()

* make incorrect subcommand and --version work on toplevel command

* migrate accurip show, expand Lager, do not attempt to return from Lager.__init__.

* migrate offset find, add Lager.error

* correct offset find drive symlink handling

* migrate drive

* change Lager.__init__(prog) to arg from kwarg

* but actually

* remove Whipper.usage

* add and use Lager.device_option() context manager

* help I married an axe murderer

* use unified options namespace for entire command tree

* migrate whipper cd without comprehensive config loading

* switch to logging module

- use logging instead of flog for non-extern modules
- use WHIPPER_DEBUG and WHIPPER_LOGFILE env variables

* convert self.log calls to logger.debug

* convert self.error calls to logger.error

* remove log.Loggable, use logger not logging

* Logging conversion continues

- Convert log.* calls to logger.*
- Remove morituri.common.log imports

* remove morituri.common.log from tests

* remove extern/flog, bare minimum Debug conversion

* update README for logging changes

* update soxi to use logging

* refactor Lager for more declarative subcommands

* Refactor Lager.device_option:

- inline into __init__
- throw IOError instead of Exception for missing drives
- remove CommandError checking in rip/main

* rename rip to whipper in rip.main

* convert rip.debug commands

* Rename logcommand.Lager to command.BaseCommand

- remove command.CommandError occurrences
- remove python-command external module

* remove submodules from README, update rclog formatter

* update minor ambiguity in readme for command invocation

* update version number to match setup.py

* remove gitmodules

* update version number in tests as well (boo)

* convert logger.error to logger.critical

* Change morituri.rip to morituri.command

- mv common.command to command.basecommand
- move TEMPLATES used only by rip.cd out of rip.common
- update entry point for command to command.main

* update basecommand documentation

* go pyflaking: import fixing

* replace self.stdout with sys.stdout

* remove BaseCommand.config, alphabetise imports

* convert self.stdXXX leftovers

* convert last getRootCommand to config.Config

* convert last getExceptionMessage's to str

* change musicbrainz useragent to whipper
2016-12-20 23:11:30 +01:00
Samantha Baldwin
39aa68909e do not recalculate musicbrainz disc id for every getMusicBrainzDiscId() call (#69) 2016-11-08 13:16:52 +01:00
Samantha Baldwin
b97e0a72e3 PRE_EMPHASIS (#27)
* update README to force python2

* add support for PRE_EMPHASIS detection; mark pre-emphasis as FLAGS PRE in .cue

* correct typo, s/ivar/type/ for pre_emphasis element in track table
2016-07-24 22:43:29 +02:00
JoeLametta
ed4c9f4ece Convert 'Morituri' to 'morituri' (cue sheet)
The ripper name in the log file is written all lowercase: do the same
in the cue sheet too.
Short cosmetic fixes for 'logger.py'
2015-11-30 13:26:04 +01:00
Frederik "Freso" S. Olesen
d81dd339c1 Resolve musicbrainz.org/{bare/cdlookup.html -> cdtoc/attach} redirect. 2014-11-02 11:17:51 +01:00
Frederik "Freso" S. Olesen
926ce46c8d Use HTTPS for musicbrainz.org. 2014-11-02 03:03:13 +01:00
Frederik "Freso" S. Olesen
f08d0a28ca Remove traces of mm.musicbrainz.org.
See
http://chatlogs.musicbrainz.org/musicbrainz-devel/2014/2014-11/2014-11-02.html#T01-18-50-32205
2014-11-02 03:01:38 +01:00
Samantha Baldwin
38cf1f0753 Show morituri version in cue and update TODO. 2014-05-26 00:11:08 -04:00
Thomas Vander Stichele
354bd7744f fix so first FILE goes before TRACK 01 and possible PREGAP 2013-08-24 13:58:21 +02:00
Thomas Vander Stichele
1141f5e27c add type doc 2013-08-24 02:41:21 +02:00
Thomas Vander Stichele
abc03e8e43 since the cached results have wrong (negative) relative for index > 01,
make sure we don't use the cache by upping the version
2013-08-24 02:41:21 +02:00
Thomas Vander Stichele
73a7056d85 handle index 00 of track 1 specially 2013-08-24 02:38:39 +02:00
Thomas Vander Stichele
307db4f59f update logging; bump classVersion of Table
now table will get a logName set correctly when unpickled too
2013-03-05 16:59:38 +01:00
Thomas Vander Stichele
55a2325e1e add debugging, comments and documentation 2013-03-01 18:50:43 +01:00
Thomas Vander Stichele
e3b168c2a1 key on musicbrainz disc id by default
Do not use cache if the mb disc id does not match the table cache value.

Fixes asserts on the mb disc id differing.

Fixes trac ticket 103.
2013-02-03 22:20:00 +01:00
Thomas Vander Stichele
7b42cbf93b add debug 2013-02-03 20:57:32 +01:00
Thomas Vander Stichele
55df17cf89 * morituri/image/cue.py:
* morituri/image/table.py:
	* morituri/image/toc.py:
	  Fix pychecker warnings.
2012-11-23 15:36:27 +00:00
Thomas Vander Stichele
9b4e653ae4 * 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-22 23:20:44 +00:00
Thomas Vander Stichele
76d587185d * morituri/image/table.py:
* morituri/test/test_image_table.py:
	* morituri/test/test_image_toc.py:
	  Increase coverage.
2012-11-18 16:20:21 +00:00
Thomas Vander Stichele
0fab4515c6 pep8 fixes 2012-11-11 23:00:37 +00:00
Thomas Vander Stichele
f4c79e4e26 pep8 fixes 2012-11-11 22:32:20 +00:00
Thomas Vander Stichele
090886bc45 pep8 fixes 2012-11-10 22:15:04 +00:00
Thomas Vander Stichele
367af25232 * 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 14:19:50 +00:00
Thomas Vander Stichele
d43860bdfb * 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-14 12:18:51 +00:00
Thomas Vander Stichele
041a492f67 * morituri/image/table.py:
Extract one function to write a FILE line.
2011-05-22 17:17:33 +00:00
Thomas Vander Stichele
4c0036611e patch by: Ross Burton <ross@burtonini.com>
* morituri/image/table.py:
	  When writing the .cue file, only write the basename, since
	  the .cue file gets stored in the album directory.
	  Fixes #10.
2011-05-22 17:12:21 +00:00
Thomas Vander Stichele
b797d40cce document 2011-05-21 16:42:11 +00:00
Thomas Vander Stichele
c301015537 * 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 11:50:39 +00:00
Thomas Vander Stichele
08fc4f67a6 * 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-02 17:14:26 +00:00
Thomas Vander Stichele
c34546d70a * morituri/image/table.py:
* morituri/program/cdparanoia.py:
	  Do some 80 character cleanups.
2010-04-09 16:20:41 +00:00
Thomas Vander Stichele
dfa3efe662 * 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 22:16:46 +00:00
Thomas Vander Stichele
e6f13ccf84 * 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 15:40:44 +00:00
Thomas Vander Stichele
d57cb7ad15 * morituri/image/table.py:
Fix deprecationwarning for python 2.6
2009-06-24 19:18:41 +00:00
Thomas Vander Stichele
1643d1ec50 * 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-20 10:57:12 +00:00
Thomas Vander Stichele
d75066d1bb pychecker cleanup 2009-06-07 13:46:26 +00:00
Thomas Vander Stichele
8f88db0a29 * 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-07 12:54:32 +00:00
Thomas Vander Stichele
262801e554 * 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 14:59:45 +00:00
Thomas Vander Stichele
c793211f28 * 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 21:30:21 +00:00
Thomas Vander Stichele
feec95e768 * morituri/image/table.py:
Add a version ivar to help with versioning pickled objects.
2009-05-23 19:48:35 +00:00
Thomas Vander Stichele
41c92fcda4 pychecker fixes 2009-05-22 20:44:10 +00:00
Thomas Vander Stichele
42902fa2c5 fix bug caught by pychecker 2009-05-22 20:08:54 +00:00
Thomas Vander Stichele
483c7b8a0c * 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 19:09:27 +00:00
Thomas Vander Stichele
0a56fc129e * 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 09:31:38 +00:00
Thomas Vander Stichele
09fe46ee99 * 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 09:29:01 +00:00
Thomas Vander Stichele
59cb5d0dcb * 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 09:21:55 +00:00
Thomas Vander Stichele
dc9ac1c6e3 * 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 20:33:00 +00:00
Thomas Vander Stichele
f2ba07c729 * 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 19:23:57 +00:00
Thomas Vander Stichele
e87dc1b471 * 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 19:06:29 +00:00
Thomas Vander Stichele
5cae5cf60f * 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
	* examples/readdisc.py:
	  Add --track-template.
	  Pass counter to setFile.
2009-05-15 08:08:22 +00:00