Mercurial > hg > camir-aes2014
diff core/magnatagatune/mbid_from_artist_album.py @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/magnatagatune/mbid_from_artist_album.py Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,56 @@ +#!/usr/bin/env python +"""A simple script that searches for a release in the MusicBrainz +database and prints out a few details about the first matching release. + + $ ./releasesearch.py "the beatles" revolver + Revolver, by The Beatles + Released 1966-08-08 (Official) + MusicBrainz ID: b4b04cbf-118a-3944-9545-38a0a88ff1a2 +""" +from __future__ import print_function +from __future__ import unicode_literals +import musicbrainzngs +import sys + +musicbrainzngs.set_useragent( + "python-musicbrainz-ngs-example", + "0.1", + "https://github.com/alastair/python-musicbrainz-ngs/", +) + +def show_release_details(rel): + """Print some details about a release dictionary to stdout. + """ + # "artist-credit-phrase" is a flat string of the credited artists + # joined with " + " or whatever is given by the server. + # You can also work with the "artist-credit" list manually. + print("{}, by {}".format(rel['title'], rel["artist-credit-phrase"])) + print("{}".format(rel['id'])) + + + +def fail(message): + """Print a message to stderr and then exit with an error status. + """ + print(message, file=sys.stderr) + sys.exit(1) + +if __name__ == '__main__': + args = sys.argv[1:] + if len(args) != 2: + fail("usage: {} ARTIST ALBUM".format(sys.argv[0])) + artist, album = args + + # Keyword arguments to the "search_*" functions limit keywords to + # specific fields. The "limit" keyword argument is special (like as + # "offset", not shown here) and specifies the number of results to + # return. + result = musicbrainzngs.search_releases(artist=artist, release=album, + limit=1) + # On success, result is a dictionary with a single key: + # "release-list", which is a list of dictionaries. + if not result['release-list']: + fail("no release found") + for (idx, release) in enumerate(result['release-list']): + # print("match #{}:".format(idx+1)) + show_release_details(release)