X-Git-Url: https://diplodocus.org/git/flac-archive/blobdiff_plain/087a7b23689ab1c6142074dc54758eb6f4fbfa8e..47d39442b35fe1d44133693f95e81c03cab69a9f:/fa-rip diff --git a/fa-rip b/fa-rip index 62b69af..1fe5bbd 100755 --- a/fa-rip +++ b/fa-rip @@ -1,4 +1,4 @@ -#! /usr/bin/env python2.4 +#!/usr/bin/python """ =head1 NAME @@ -128,7 +128,10 @@ def mkcue(disc, trackcount=None): def tags_file(fn, trackcount, various, artist=None, album=None, release_dates={}, tracks=[]): fp = c(file, fn, 'w') - c(fp.write, 'ARTIST=') + if various: + c(fp.write, 'ALBUMARTIST=') + else: + c(fp.write, 'ARTIST=') if artist != None: c(fp.write, artist.encode('utf-8')) c(fp.write, '\nALBUM=') @@ -170,23 +173,30 @@ def tags(q, releases, trackcount): tags_file('candidate-tags-0', trackcount, False) - include = musicbrainz2.webservice.ReleaseIncludes(tracks=True) + include = musicbrainz2.webservice.ReleaseIncludes(artist=True, tracks=True) i = 0 - for album in releases: + for rel_id in releases: i += 1 - various = not album.release.isSingleArtistRelease() + release = q.getReleaseById(rel_id, include) + various = not release.isSingleArtistRelease() if various and not seen_various: seen_various = True - tags_file('candidate-tags-0v', trackcount, True) + tags_file('candidate-tags-0v', trackcount, various) tags_file('candidate-tags-' + str(i), trackcount, various, - album.release.artist.name, album.release.title, - album.release.getReleaseEventsAsDict(), - q.getReleaseById(album.release.id, include).tracks) - - cover_art(str(i), album.release.asin) + release.artist.name, release.title, + release.getReleaseEventsAsDict(), + release.tracks) + + # XXX Not sure if .asin is here after my change above; may need to + # include urlRelations=True. See also: + # for i in release.getRelations(): print i.type + # http://musicbrainz.org/ns/rel-1.0#Wikipedia + # ... + # http://musicbrainz.org/ns/rel-1.0#AmazonAsin + cover_art(str(i), release.asin) def rip(device, trackcount, single_file): if device == None: @@ -212,7 +222,9 @@ def make_post_processor(command): def releases_by_disc(q, disc): filter = musicbrainz2.webservice.ReleaseFilter(discId=disc.getId()) - return q.getReleases(filter) + # XXX had to change x.getId to x.release.getId on 10.04; is that an API + # change in a newer version (handle both) or is this code I never tested? + return (x.release.getId() for x in q.getReleases(filter)) def releases_by(q, title, artist=None): r = q.getReleases(musicbrainz2.webservice.ReleaseFilter(title=title)) @@ -220,8 +232,8 @@ def releases_by(q, title, artist=None): return r artist = re.sub(r'\s+', r'\s+', artist.strip()) - return [x for x in r if re.match(artist, x.release.artist.name, - re.IGNORECASE) != None] + return (x.getId() for x in r if re.match(artist, x.release.artist.name, + re.IGNORECASE) != None) def main(argv): # Control the exit code for any uncaught exceptions.