Commit Graph

58 Commits

Author SHA1 Message Date
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
b2ca3167eb Sox (#48)
* 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
* add SoxPeakTask, program/sox module, sox.peak_level()
* use sox peak detection in lieu of gstreamer
2016-10-17 15:42:17 +02:00
Chad Bergeron
8ff28da4fc clean up unnecessary return. 2016-02-02 16:24:24 -05:00
Chad Bergeron
0da064fe97 Modified str outputs and ensured that tracks with no peakdB set trackResult.peak to a float. 2016-02-02 16:14:26 -05:00
Thomas Vander Stichele
aec75861be Use newer lamemp3enc element
This fixes trac issue 45 and adapts pull request 42 on github
2013-11-23 16:57:33 -05:00
Thomas Vander Stichele
8a8189fa89 make profiles loggable 2013-11-23 16:57:33 -05:00
Thomas Vander Stichele
fc282df8a6 start with a one frame interval until we know more
if it's say four frames, we get to paused without eos, but then
hit eos without level message
2013-08-29 19:51:07 +02:00
Thomas Vander Stichele
4e03a6e966 work around GStreamer bug in flacdec for really short files 2013-02-26 23:12:16 +01:00
Thomas Vander Stichele
a692542307 debug and cleanup 2013-02-26 23:12:16 +01:00
Thomas Vander Stichele
f05ec0f2e9 The logic was the wrong way around.
The idea is that we set an interval that is definitely smaller than
the whole file.
2013-02-26 23:12:15 +01:00
Thomas Vander Stichele
1c1d1c954e add FIXME 2012-12-06 17:49:32 +00:00
Thomas Vander Stichele
90a8d4992c * 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 17:28:24 +00:00
Thomas Vander Stichele
90bb3a7371 * morituri/common/encode.py:
Collect all tags by replacing from newer tag messages.
	  Gets more than bitrate from flacs now.
2012-12-06 17:18:32 +00:00
Thomas Vander Stichele
43963a0050 log all tasks 2012-12-06 16:58:44 +00:00
Thomas Vander Stichele
6b50218701 * morituri/common/encode.py:
Also remove buggy audio parsers when encoding.
	  Fixes #73.
2012-11-23 16:39:34 +00:00
Thomas Vander Stichele
3c87608773 * morituri/common/encode.py:
Use vbr-quality instead of quality for vbr.  Fixes #94.
2012-11-23 16:30:05 +00:00
Thomas Vander Stichele
4ddca857f7 pep8 fixes 2012-11-10 21:56:30 +00:00
Thomas Vander Stichele
91b852b485 * morituri/common/checksum.py:
* morituri/common/encode.py:
	  Add a GstPipelineTask that lets us log.
	  Handle checksumming of small tracks better.
2012-08-12 12:26:33 +00:00
Thomas Vander Stichele
519baf6501 revert accidental commit 2012-07-12 09:40:00 +00:00
Thomas Vander Stichele
97101ec972 add new file 2012-07-12 09:38:59 +00:00
Thomas Vander Stichele
8ec7bcbb9d * 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 19:18:10 +00:00
Thomas Vander Stichele
798a209195 * 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-08-05 18:50:51 +00:00
Thomas Vander Stichele
3fccbac367 * 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 17:00:04 +00:00
Thomas Vander Stichele
9a6af593f8 * 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 16:30:41 +00:00
Thomas Vander Stichele
8bc5eff73c * 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 12:51:40 +00:00
Thomas Vander Stichele
eef8b18435 * morituri/common/encode.py:
Convert TagReadTask to gstreamer.GstPipelineTask and
	  remove lots of duplicate code.
2011-05-23 18:05:31 +00:00
Thomas Vander Stichele
ce71bfb5c2 * morituri/common/checksum.py:
* morituri/common/encode.py:
	* morituri/common/gstreamer.py:
	  Move play to base class of GstPipelineTask.
2011-05-23 18:02:48 +00:00
Thomas Vander Stichele
3482288750 * 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 15:26:19 +00:00
Thomas Vander Stichele
1ce46272a9 * 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 14:57:16 +00:00
Thomas Vander Stichele
514bf4bc10 * morituri/common/encode.py:
Add some debug.
2011-05-23 13:46:46 +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
0b520f2e86 * morituri/common/encode.py:
Alac does not have merge_tags.  Fixes #15.
2011-05-19 01:23:53 +00:00
Thomas Vander Stichele
f70ba7cb32 * 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 00:28:36 +00:00
Thomas Vander Stichele
7bd0c5e2c0 * 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-04-08 09:04:25 +00:00
Thomas Vander Stichele
335b49e4b4 * morituri/common/encode.py:
Debug failing to write tags better.  See #60.
2011-03-20 18:39:28 +00:00
Thomas Vander Stichele
a4a1df9d2f remove print 2010-04-16 21:12:11 +00:00
Thomas Vander Stichele
5a778deca7 move checksum import inline so we don't import gst again 2010-04-16 21:11:50 +00:00
Thomas Vander Stichele
c68848026a * morituri/common/encode.py:
* morituri/rip/image.py:
	  Provide status on the retagging.
2010-04-14 22:01:45 +00:00
Thomas Vander Stichele
3361edbee2 * morituri/common/encode.py:
Before moving the newly tagged file to overwrite the original
	  one, copy over mode.
2010-04-14 21:44:09 +00:00
Thomas Vander Stichele
cee915fbd2 * morituri/common/encode.py:
Fix wrong code for checksum comparison.
2010-04-13 22:10:06 +00:00
Thomas Vander Stichele
4cc8b753b8 pychecker fix 2010-04-13 21:58:13 +00:00
Thomas Vander Stichele
d9ca12d7cc * 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 21:55:35 +00:00
Thomas Vander Stichele
310a3789c0 * morituri/common/encode.py:
pychecker fix.
2010-04-13 14:12:17 +00:00
Thomas Vander Stichele
a787676239 * morituri/common/encode.py:
Add a task to read tags.
	* morituri/test/test_common_encode.py:
	  Add a test.
2010-04-13 07:37:01 +00:00
Thomas Vander Stichele
2e7a3974c4 * morituri/common/encode.py:
Add a vbr profile.
2010-04-11 17:14:37 +00:00
Thomas Vander Stichele
e124c79c64 * 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-08 21:06:52 +00:00
Thomas Vander Stichele
98213c4196 * 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 00:02:56 +00:00
Thomas Vander Stichele
3000f0a1e7 * 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.
2010-04-04 23:20:52 +00:00
Thomas Vander Stichele
22a3554381 * 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-04-04 19:29:49 +00:00
Thomas Vander Stichele
a9097bad73 * morituri/common/encode.py:
Handle utf-8 properly.
2010-02-28 19:02:57 +00:00