Python Example of Lookup using Artist and Album Name Strings

Hi,

Here is a function in Python that accepts a Artist Name and Album name and returns a Track List.

It’s not finished yet, but I thought I’d donate it as there doesn’t seem to be anything else that serves as an example of how to use MusicBrainz.

Cheers
Dave

import musicbrainzngs

################################################################################
#
#  getMusicBrainzTrackListsForArtistAndAlbum
#
################################################################################
def getMusicBrainzTrackListsForArtistAndAlbum(theArtistName,theAlbumName,theMinimumScore,theLimit):
    myLimitCount = 0
    myQuery = 'artist=' + theArtistName + ' AND release=' + theAlbumName
    myReleasesDict = musicbrainzngs.search_releases(myQuery)
    myReleasesList = myReleasesDict['releases']
    myReturnReleaseList = []
    for myReleaseDict in myReleasesList:
        myReleaseID = myReleaseDict['id']
        myScore = myReleaseDict['score']
        if (myScore < theMinimumScore):
            continue
        if (myLimitCount > theLimit):
            continue

        myLimitCount = myLimitCount + 1
        myReturnReleaseDict = {}
        myReturnReleaseDict['ReleaseID'] = myReleaseID;
        myReturnReleaseDict['ReleaseArtist'] = theArtistName;
        myReturnReleaseDict['ReleaseAlbum'] = theAlbumName;

        myNewReleaseDict = musicbrainzngs.get_release_by_id(myReleaseID, includes=['recordings'])
        myMedia = myNewReleaseDict['media']
        if len(myMedia) < 1:
            print('*****No Media for ' + theArtistName + '  ' + theAlbumName)
            continue

        myTrackDict = myMedia[0]
        if len(myTrackDict) < 1:
            print('*****No Tracks for ' + theArtistName + '  ' + theAlbumName)
            continue

        myReturnTrackDict = {}
        myTrackCount = myTrackDict['track-count']
        myTrackList = myTrackDict['tracks']
        for myRecordingDict in myTrackList:
            myTrackTitle = myRecordingDict['title']
            myTrackNumber = myRecordingDict['number']
#            print(myTrackNumber, '  ', myTrackTitle)
            myReturnTrackDict[myTrackNumber] = myTrackTitle
        myReturnReleaseDict['ReleaseTrackDict'] = myReturnTrackDict
        myReturnReleaseList.append(myReturnReleaseDict)

    return myReturnReleaseList