Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > 8e9e4cda16218950f2429bda60c8d306 > files > 13

python-musicbrainz-2.1.5-3mdv2008.1.x86_64.rpm

#!/usr/bin/env python

import sys
import musicbrainz
import difflib

#so query names are shorter
q = musicbrainz

def main(artistName):
    mb = musicbrainz.mb()
    mb.SetServer('musicbrainz.org', 80)
    mb.SetDepth(4)

    ret = mb.QueryWithArgs(q.MBQ_FindArtistByName, artistName)
    if not ret:
        error = mb.GetQueryError()
        print "Query failed: %s" % error

    # Check to see how many items were returned from the server
    numArtists = mb.GetResultInt(q.MBE_GetNumArtists)
    if numArtists < 1:
        print "No artists found."
    
    print "Found %d artists." % numArtists

    for ii in range(1, numArtists+1):
        # Start at the top of the query and work our way down
        mb.Select(q.MBS_Rewind)  

        # Select the ith artist
        mb.Select1(q.MBS_SelectArtist, ii)  

        # Extract the artist name from the ith track
        data = mb.GetResultData(q.MBE_ArtistGetArtistName)
        print "    Artist: %r" % data

        # Extract the artist id from the ith track
        data = mb.GetResultData(q.MBE_ArtistGetArtistId)
        temp = mb.GetIDFromURL(data)
        print "  ArtistId: '%s'" % temp

        # Extract the number of albums 
        numAlbums = mb.GetResultInt(q.MBE_GetNumAlbums)
        print "Num Albums: %d" % numAlbums

        for jj in range(1, numAlbums+1):
            # Select the jth album in the album list
            mb.Select1(q.MBS_SelectAlbum, jj)  

            # Extract the album name 
            data = mb.GetResultData(q.MBE_AlbumGetAlbumName)
            print "     Album: %r" % data,
            
            data = mb.GetResultData(q.MBE_AlbumGetAlbumId)
            temp = mb.GetIDFromURL(data)
            print " (%s)" % temp
        
            # Back up one level and go back to the artist level 
            mb.Select(q.MBS_Back)  

        print ""

    
    
    



if __name__ == '__main__':
    if len(sys.argv) == 1:
        print "findartist.py <artistname>"
        sys.exit(0)
    main(sys.argv[1])