[SCM] morituri/master: * 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.
js at users.alioth.debian.org
js at users.alioth.debian.org
Sun Oct 19 20:09:06 UTC 2014
The following commit has been merged in the master branch:
commit 8f88db0a2917ced363c876daa599bbc673d87dbf
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date: Sun Jun 7 12:54:32 2009 +0000
* 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.
diff --git a/ChangeLog b/ChangeLog
index 30aab6e..e81597c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2009-06-07 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * 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-06 Thomas Vander Stichele <thomas at apestaart dot org>
* morituri/test/cdparanoia.progress:
diff --git a/morituri/image/table.py b/morituri/image/table.py
index 93eb1ac..f497302 100644
--- a/morituri/image/table.py
+++ b/morituri/image/table.py
@@ -95,6 +95,17 @@ class Track:
indexes.sort()
return self.indexes[indexes[-1]]
+ def getPregap(self):
+ """
+ Returns the length of the pregap for this track.
+
+ The pregap is 0 if there is no index 0, and the difference between
+ index 1 and index 0 if there is.
+ """
+ if 0 not in self.indexes:
+ return 0
+
+ return self.indexes[1].absolute - self.indexes[0].absolute
class Index:
"""
diff --git a/morituri/rip/cd.py b/morituri/rip/cd.py
index c06b7b5..ef07968 100644
--- a/morituri/rip/cd.py
+++ b/morituri/rip/cd.py
@@ -114,10 +114,11 @@ def musicbrainz(discid):
isSingleArtist = release.isSingleArtistRelease()
metadata.various = not isSingleArtist
metadata.title = release.title
- metadata.artist = release.artist.getUniqueName()
+ # getUniqueName gets disambiguating names like Muse (UK rock band)
+ metadata.artist = release.artist.name
metadata.release = release.getEarliestReleaseDate()
- print "%s - %s" % (release.artist.getUniqueName(), release.title)
+ print "%s - %s" % (release.artist.name, release.title)
for t in release.tracks:
track = TrackMetadata()
@@ -131,7 +132,7 @@ def musicbrainz(discid):
return metadata
-def getPath(outdir, template, metadata, i):
+def getPath(outdir, template, metadata, mbdiscid, i):
"""
Based on the template, get a complete path for the given track,
minus extension.
@@ -154,10 +155,10 @@ def getPath(outdir, template, metadata, i):
# default values
v['A'] = 'Unknown Artist'
- v['d'] = 'Unknown Disc'
+ v['d'] = mbdiscid
v['a'] = v['A']
- v['n'] = 'Unknown Track'
+ v['n'] = 'Unknown Track %d' % i
if metadata:
v['A'] = filterForPath(metadata.artist)
@@ -232,16 +233,17 @@ def getTagList(metadata, i):
# GstDate expects a full date, so default to Jan and 1st if MM and DD
# are missing
date = metadata.release
- log.debug('metadata',
- 'Converting release date %r to structure', date)
- if len(date) == 4:
- date += '-01'
- if len(date) == 7:
- date += '-01'
-
- s = gst.structure_from_string('hi,date=(GstDate)%s' %
- str(date))
- ret[gst.TAG_DATE] = s['date']
+ if date:
+ log.debug('metadata',
+ 'Converting release date %r to structure', date)
+ if len(date) == 4:
+ date += '-01'
+ if len(date) == 7:
+ date += '-01'
+
+ s = gst.structure_from_string('hi,date=(GstDate)%s' %
+ str(date))
+ ret[gst.TAG_DATE] = s['date']
# FIXME: gst.TAG_ISRC
@@ -313,9 +315,10 @@ class Rip(logcommand.LogCommand):
# already show us some info based on this
print "CDDB disc id", ittoc.getCDDBDiscId()
- print "MusicBrainz disc id", ittoc.getMusicBrainzDiscId()
+ mbdiscid = ittoc.getMusicBrainzDiscId()
+ print "MusicBrainz disc id", mbdiscid
- metadata = musicbrainz(ittoc.getMusicBrainzDiscId())
+ metadata = musicbrainz(mbdiscid)
if not metadata:
print 'Submit this disc to MusicBrainz at:'
print ittoc.getMusicBrainzSubmitURL()
@@ -370,7 +373,7 @@ class Rip(logcommand.LogCommand):
print 'Found Hidden Track One Audio from frame %d to %d' % (start, stop)
# rip it
- htoapath = getPath(outdir, self.options.track_template, metadata, 0) + '.' + extension
+ htoapath = getPath(outdir, self.options.track_template, metadata, mbdiscid, 0) + '.' + extension
dirname = os.path.dirname(htoapath)
if not os.path.exists(dirname):
os.makedirs(dirname)
@@ -408,7 +411,7 @@ class Rip(logcommand.LogCommand):
trackResult = result.TrackResult()
res.tracks.append(trackResult)
- path = getPath(outdir, self.options.track_template, metadata, i + 1) + '.' + extension
+ path = getPath(outdir, self.options.track_template, metadata, mbdiscid, i + 1) + '.' + extension
trackResult.number = i + 1
trackResult.filename = path
@@ -437,6 +440,7 @@ class Rip(logcommand.LogCommand):
trackResult.copycrc = t.copychecksum
trackResult.peak = t.peak
trackResult.quality = t.quality
+ trackResult.pregap = itable.tracks[i].getPregap()
print 'Peak level: %.2f %%' % (math.sqrt(t.peak) * 100.0, )
print 'Rip quality: %.2f %%' % (t.quality * 100.0, )
@@ -446,7 +450,7 @@ class Rip(logcommand.LogCommand):
### write disc files
- discName = getPath(outdir, self.options.disc_template, metadata, i)
+ discName = getPath(outdir, self.options.disc_template, metadata, mbdiscid, i)
dirname = os.path.dirname(discName)
if not os.path.exists(dirname):
os.makedirs(dirname)
@@ -455,7 +459,8 @@ class Rip(logcommand.LogCommand):
assert itable.canCue()
cuePath = '%s.cue' % discName
handle = open(cuePath, 'w')
- handle.write(itable.cue())
+ # FIXME: do we always want utf-8 ?
+ handle.write(itable.cue().encode('utf-8'))
handle.close()
# write .m3u file
@@ -473,11 +478,13 @@ class Rip(logcommand.LogCommand):
continue
path = getPath(outdir, self.options.track_template, metadata,
- i + 1) + '.' + extension
- handle.write('#EXTINF:%d,%s\n' % (
+ mbdiscid, i + 1) + '.' + extension
+ u = u'#EXTINF:%d,%s\n' % (
itable.getTrackLength(i + 1) / common.FRAMES_PER_SECOND,
- os.path.basename(path)))
- handle.write('%s\n' % os.path.basename(path))
+ os.path.basename(path))
+ handle.write(u.encode('utf-8'))
+ u = '%s\n' % os.path.basename(path)
+ handle.write(u.encode('utf-8'))
handle.close()
# verify using accuraterip
@@ -553,11 +560,11 @@ class Rip(logcommand.LogCommand):
i + 1, status, c, csum, ar)
# write log file
- discName = getPath(outdir, self.options.disc_template, metadata, i)
+ discName = getPath(outdir, self.options.disc_template, metadata, mbdiscid, i)
logPath = '%s.log' % discName
logger = result.getLogger()
handle = open(logPath, 'w')
- handle.write(logger.log(res))
+ handle.write(logger.log(res).encode('utf-8'))
handle.close()
class CD(logcommand.LogCommand):
--
morituri packaging
More information about the pkg-multimedia-commits
mailing list