X-Git-Url: https://git.hcoop.net/clinton/abcde.git/blobdiff_plain/22b54460ba7338e88a50fdf1a5e77ca44616519a..6d81edb6ec135d2c5ef91d77692fb7402e4e86a5:/examples/musicbrainz-get-tracks?ds=sidebyside diff --git a/examples/musicbrainz-get-tracks b/examples/musicbrainz-get-tracks index 1d38480..be0b3b1 100755 --- a/examples/musicbrainz-get-tracks +++ b/examples/musicbrainz-get-tracks @@ -9,43 +9,22 @@ import musicbrainz.queries as mq DEF_CD_DEV = '/dev/cdrom' -# TODO: -# -# * --cdrom should take an argument, e.g. /dev/cdrom1. musicbrainz.queries -# doesn't seem to provide for this. - -def get_toc_discid(mb): - mb.Query(mq.MBQ_GetCDTOC) - return mb.GetResultData(mq.MBE_TOCGetCDIndexId) +def get_toc_discid(mb, dev): + mb.SetDevice(dev) + try: + mb.Query(mq.MBQ_GetCDTOC) + return mb.GetResultData(mq.MBE_TOCGetCDIndexId) + except musicbrainz.MusicBrainzError: + print >>sys.stderr, "error: could not read TOC from disc" + sys.exit(1) def lookup_discid(mb, id): mb.QueryWithArgs(mq.MBQ_GetCDInfoFromCDIndexId, [id]) -if __name__ == "__main__": - shortopts = 'cd:' - longopts = ['cdrom', 'discid='] - - mb = musicbrainz.mb() - mb.SetDepth(2) - - opts, args = getopt.getopt(sys.argv[1:], shortopts, longopts) - - id = None - if opts: - for opt, arg in opts: - if opt in ('--cdrom', '-c'): - id = get_toc_discid(mb) - lookup_discid(mb, id) - if opt in ('--discid', '-d'): - id = arg - lookup_discid(mb, id) - else: - id = get_toc_discid(mb) - lookup_discid(mb, id) - +def fake_cddb(mb): matches = mb.GetResultInt(mq.MBE_GetNumAlbums) if matches == 0: - print >>sys.stderr, "could not find an entry for this CD" + print >>sys.stderr, "error: could not find an entry for this disc" sys.exit(1) if matches > 1: print >>sys.stderr, "warning: multiple matches, using first" @@ -121,3 +100,31 @@ if __name__ == "__main__": print "PLAYORDER=" print "." + +if __name__ == "__main__": + shortopts = 'nd:i:' + longopts = ['no-lookup', 'device=', 'id='] + + mb = musicbrainz.mb() + mb.SetDepth(2) + + opts, args = getopt.getopt(sys.argv[1:], shortopts, longopts) + + id = None + lookup = True + if opts: + for opt, arg in opts: + if opt in ('--no-lookup', '-n'): + lookup = False + if opt in ('--device', '-d'): + id = get_toc_discid(mb, arg) + if opt in ('--id', '-i'): + id = arg + if not id: + id = get_toc_discid(mb, DEF_CD_DEV) + + if lookup: + lookup_discid(mb, id) + fake_cddb(mb) + else: + print id