[SCM] morituri/master: * examples/readdisc.py: Add musicbrainz code for disc naming.
js at users.alioth.debian.org
js at users.alioth.debian.org
Sun Oct 19 20:08:58 UTC 2014
The following commit has been merged in the master branch:
commit 1485ef790c4d26d12bbc6c9dc593ed2ae433d4e5
Author: Thomas Vander Stichele <thomas (at) apestaart (dot) org>
Date: Wed May 6 21:45:12 2009 +0000
* examples/readdisc.py:
Add musicbrainz code for disc naming.
diff --git a/ChangeLog b/ChangeLog
index 23dc1b0..4b30576 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
+ * examples/readdisc.py:
+ Add musicbrainz code for disc naming.
+
+2009-05-06 Thomas Vander Stichele <thomas at apestaart dot org>
+
* morituri/image/table.py:
* morituri/image/toc.py:
Delete old code.
diff --git a/examples/readdisc.py b/examples/readdisc.py
index 40b52da..e450233 100644
--- a/examples/readdisc.py
+++ b/examples/readdisc.py
@@ -56,27 +56,91 @@ def gtkmain(runner, taskk):
def climain(runner, taskk):
runner.run(taskk)
+class TrackMetadata(object):
+ artist = None
+ title = None
+
+class DiscMetadata(object):
+ artist = None
+ title = None
+ various = False
+ tracks = None
+
+ def __init__(self):
+ self.tracks = []
+
+def musicbrainz(discid):
+ metadata = DiscMetadata()
+
+ import musicbrainz2.disc as mbdisc
+ import musicbrainz2.webservice as mbws
+
+
+ # Setup a Query object.
+ service = mbws.WebService()
+ query = mbws.Query(service)
+
+
+ # Query for all discs matching the given DiscID.
+ try:
+ filter = mbws.ReleaseFilter(discId=discid)
+ results = query.getReleases(filter)
+ except mbws.WebServiceError, e:
+ print "Error:", e
+ return
+
+
+ # No disc matching this DiscID has been found.
+ if len(results) == 0:
+ print "Disc is not yet in the MusicBrainz database."
+ print "Consider adding it via", mbdisc.getSubmissionUrl(disc)
+ return
+
+
+ # Display the returned results to the user.
+ print 'Matching releases:'
+
+ for result in results:
+ release = result.release
+ print 'Artist :', release.artist.name
+ print 'Title :', release.title
+ print
+
+
+ # Select one of the returned releases. We just pick the first one.
+ selectedRelease = results[0].release
+
+
+ # The returned release object only contains title and artist, but no tracks.
+ # Query the web service once again to get all data we need.
+ try:
+ inc = mbws.ReleaseIncludes(artist=True, tracks=True, releaseEvents=True)
+ release = query.getReleaseById(selectedRelease.getId(), inc)
+ except mbws.WebServiceError, e:
+ print "Error:", e
+ sys.exit(2)
+
+
+ isSingleArtist = release.isSingleArtistRelease()
+ metadata.various = not isSingleArtist
+ metadata.title = release.title
+ metadata.artist = release.artist.getUniqueName()
+
+ print "%s - %s" % (release.artist.getUniqueName(), release.title)
+
+ i = 1
+ for t in release.tracks:
+ track = TrackMetadata()
+ if isSingleArtist:
+ track.artist = metadata.artist
+ track.title = t.title
+ else:
+ track.artist = t.artist.name
+ track.title = t.title
+ metadata.tracks.append(track)
+
+ return metadata
-def arcs(runner, function, table, track, offset):
- # rips the track with the given offset, return the arcs checksum
- print 'ripping track %r with offset %d' % (track, offset)
-
- fd, path = tempfile.mkstemp(suffix='.track%02d.offset%d.morituri.wav' % (
- track, offset))
- os.close(fd)
-
- track = table.tracks[track - 1]
- t = cdparanoia.ReadTrackTask(path, table, track.start, track.end, offset)
- t.description = 'Ripping with offset %d' % offset
- function(runner, t)
-
- t = checksum.AccurateRipChecksumTask(path, trackNumber=track,
- trackCount=len(table.tracks))
- function(runner, t)
-
- # os.unlink(path)
- return "%08x" % t.checksum
-
def main(argv):
parser = optparse.OptionParser()
@@ -128,8 +192,13 @@ def main(argv):
lastTrackStart = 0
+ metadata = musicbrainz(itable.getMusicBrainzDiscId())
+
for i, track in enumerate(itable.tracks):
path = 'track%02d.wav' % (i + 1)
+ if metadata:
+ path = '%s - %s.wav' % (metadata.tracks[i].artist,
+ metadata.tracks[i].title)
# FIXME: optionally allow overriding reripping
if not os.path.exists(path):
print 'Ripping track %d' % (i + 1)
@@ -148,12 +217,16 @@ def main(argv):
for t in itable.tracks:
print t, t.indexes.values()
- handle = open('morituri.cue', 'w')
+ discName = 'morituri'
+ if metadata:
+ discName = '%s - %s' % (metadata.artist, metadata.title)
+ handle = open('%s.cue' % discName, 'w')
handle.write(itable.cue())
handle.close()
# verify using accuraterip
print "CDDB disc id", itable.getCDDBDiscId()
+ print "MusicBrainz disc id", itable.getMusicBrainzDiscId()
url = itable.getAccurateRipURL()
print "AccurateRip URL", url
--
morituri packaging
More information about the pkg-multimedia-commits
mailing list