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