[SCM] morituri/master: * morituri/common/program.py: * morituri/rip/cd.py: * morituri/rip/image.py: Add stdout to program. Use it for getting musicbrainz info.

js at users.alioth.debian.org js at users.alioth.debian.org
Sun Oct 19 20:09:49 UTC 2014


The following commit has been merged in the master branch:
commit 0c9d3c552bcf64df92b7370a0e121470f836b120
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date:   Thu Dec 6 16:44:54 2012 +0000

    	* morituri/common/program.py:
    	* morituri/rip/cd.py:
    	* morituri/rip/image.py:
    	  Add stdout to program.  Use it for getting musicbrainz info.

diff --git a/ChangeLog b/ChangeLog
index ae9eefc..67efb22 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-12-06  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+	* 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  <thomas at apestaart dot org>
 
 	* morituri/program/cdparanoia.py:
diff --git a/morituri/common/program.py b/morituri/common/program.py
index 7652677..ddb6dc5 100644
--- a/morituri/common/program.py
+++ b/morituri/common/program.py
@@ -25,6 +25,7 @@ Common functionality and class for all programs using morituri.
 """
 
 import os
+import sys
 import time
 
 from morituri.common import common, log, musicbrainzngs, cache
@@ -53,12 +54,15 @@ class Program(log.Loggable):
     outdir = None
     result = None
 
-    def __init__(self, record=False):
+    _stdout = None
+
+    def __init__(self, record=False, stdout=sys.stdout):
         """
         @param record: whether to record results of API calls for playback.
         """
         self._record = record
         self._cache = cache.ResultCache()
+        self._stdout = stdout
 
     def _getTableCachePath(self):
         path = os.path.join(os.path.expanduser('~'), '.morituri', 'cache',
@@ -211,8 +215,8 @@ class Program(log.Loggable):
 
     def getMusicBrainz(self, ittoc, mbdiscid, release=None):
         # look up disc on musicbrainz
-        print 'Disc duration: %s' % common.formatTime(
-            ittoc.duration() / 1000.0)
+        self._stdout.write('Disc duration: %s\n' % common.formatTime(
+            ittoc.duration() / 1000.0))
         self.debug('MusicBrainz submit url: %r',
             ittoc.getMusicBrainzSubmitURL())
         ret = None
@@ -227,26 +231,27 @@ class Program(log.Loggable):
             except musicbrainzngs.NotFoundException, e:
                 break
             except musicbrainzngs.MusicBrainzException, e:
-                print "Warning:", e
+                self._stdout.write("Warning: %r\n" % (e, ))
                 time.sleep(5)
                 continue
 
         if not metadatas:
             if e:
-                print "Error:", e
-            print 'Continuing without metadata'
+                self._stdout.write("Error: %r\n" % (e, ))
+            self._stdout.write('Continuing without metadata\n')
 
         if metadatas:
-            print
-            print 'Matching releases:'
+            self._stdout.write('\nMatching releases:\n')
             deltas = {}
             for metadata in metadatas:
 
-                print 'Artist  : %s' % metadata.artist.encode('utf-8')
-                print 'Title   : %s' % metadata.title.encode('utf-8')
-                print 'Duration: %s' % common.formatTime(
-                    metadata.duration / 1000.0)
-                print 'URL     : %s' % metadata.url
+                self._stdout.write('Artist  : %s\n' %
+                    metadata.artist.encode('utf-8'))
+                self._stdout.write('Title   : %s\n' %
+                    metadata.title.encode('utf-8'))
+                self._stdout.write('Duration: %s\n' %
+                    common.formatTime(metadata.duration / 1000.0))
+                self._stdout.write('URL     : %s\n' % metadata.url)
 
                 delta = abs(metadata.duration - ittoc.duration())
                 if not delta in deltas:
@@ -258,12 +263,16 @@ class Program(log.Loggable):
                 self.debug('Asked for release %r, only kept %r',
                     release, metadatas)
                 if len(metadatas) == 1:
-                    print
-                    print 'Picked requested release id %s' % release
-                    print 'Artist : %s' % metadatas[0].artist.encode('utf-8')
-                    print 'Title :  %s' % metadatas[0].title.encode('utf-8')
+                    self._stdout.write('\n')
+                    self._stdout.write('Picked requested release id %s\n' %
+                        release)
+                    self._stdout.write('Artist : %s\n' %
+                        metadatas[0].artist.encode('utf-8'))
+                    self._stdout.write('Title :  %s\n' %
+                        metadatas[0].title.encode('utf-8'))
                 elif not metadatas:
-                    print 'Requested release id %s but none match' % release
+                    self._stdout.write(
+                        'Requested release id %s but none match' % release)
                     return
             else:
                 # Select the release that most closely matches the duration.
@@ -286,19 +295,23 @@ class Program(log.Loggable):
                                 releaseTitle, i, metadata.releaseTitle))
 
                 if (not release and len(deltas.keys()) > 1):
-                    print
-                    print 'Picked closest match in duration.'
-                    print 'Others may be wrong in musicbrainz, please correct.'
-                    print 'Artist : %s' % artist.encode('utf-8')
-                    print 'Title :  %s' % metadatas[0].title.encode('utf-8')
+                    self._stdout.write('\n')
+                    self._stdout.write('Picked closest match in duration.\n')
+                    self._stdout.write('Others may be wrong in musicbrainz, '
+                        'please correct.\n')
+                    self._stdout.write('Artist : %s\n' %
+                        artist.encode('utf-8'))
+                    self._stdout.write('Title :  %s\n' %
+                        metadatas[0].title.encode('utf-8'))
 
             # Select one of the returned releases. We just pick the first one.
             ret = metadatas[0]
         else:
-            print 'Submit this disc to MusicBrainz at the above URL.'
+            self._stdout.write(
+                'Submit this disc to MusicBrainz at the above URL.\n')
             ret = None
 
-        print
+        self._stdout.write('\n')
         return ret
 
     def getTagList(self, number):
diff --git a/morituri/rip/cd.py b/morituri/rip/cd.py
index ac52f18..f78fa44 100644
--- a/morituri/rip/cd.py
+++ b/morituri/rip/cd.py
@@ -136,7 +136,8 @@ Log files will log the path to tracks relative to this directory.
                         options.offset)
 
     def do(self, args):
-        prog = program.Program(record=self.getRootCommand().record)
+        prog = program.Program(record=self.getRootCommand().record,
+            stdout=self.stdout)
         runner = task.SyncRunner()
 
         def function(r, t):
@@ -178,7 +179,7 @@ Log files will log the path to tracks relative to this directory.
             ittoc.getMusicBrainzSubmitURL())
 
         prog.metadata = prog.getMusicBrainz(ittoc, mbdiscid,
-            self.options.release_id)
+            release=self.options.release_id)
 
         if not prog.metadata:
             # fall back to FreeDB for lookup
diff --git a/morituri/rip/image.py b/morituri/rip/image.py
index 589fbfc..20d4507 100644
--- a/morituri/rip/image.py
+++ b/morituri/rip/image.py
@@ -104,7 +104,7 @@ class Retag(logcommand.LogCommand):
     summary = "retag image files"
 
     def do(self, args):
-        prog = program.Program()
+        prog = program.Program(stdout=self.stdout)
         runner = task.SyncRunner()
 
         for arg in args:

-- 
morituri packaging



More information about the pkg-multimedia-commits mailing list