Пример #1
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(2)
    mb.SetDebug(1)

    args = [
        '', # trmId
        '', # artistName
        '', # albumName
        '', # trackName
        '', # trackNum
        '', # duration
        '', # fileName
        '', # artistId
        '', # albumId
        '5e7d0d05-8601-43f7-a48e-9eb05a6ab445', #  trackId
    ]
    
    print "%r" % args
    try:
        mb.QueryWithArgs(q.MBQ_FileInfoLookup, args)
    except musicbrainz.MusicBrainzError:
        return 
    if mb.Select1(q.MBS_SelectLookupResult, 1):
        print "select worked"
Пример #2
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(2)
    mb.SetDebug(1)

    args = [
        '',  # trmId
        '',  # artistName
        '',  # albumName
        '',  # trackName
        '',  # trackNum
        '',  # duration
        '',  # fileName
        '',  # artistId
        '',  # albumId
        '5e7d0d05-8601-43f7-a48e-9eb05a6ab445',  #  trackId
    ]

    print "%r" % args
    try:
        mb.QueryWithArgs(q.MBQ_FileInfoLookup, args)
    except musicbrainz.MusicBrainzError:
        return
    if mb.Select1(q.MBS_SelectLookupResult, 1):
        print "select worked"
Пример #3
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(6)

    mb.QueryWithArgs(q.MBQ_GetTrackByTRMId, [sys.argv[1]])

    if DEBUG: print mb.GetResultRDF().encode('latin-1')
    
    # Check to see how many items were returned from the server
    numTracks = mb.GetResultInt(q.MBE_GetNumTracks)
    if numTracks < 1:
        print "No tracks found."
    
    print "Found %d track(s)." % numTracks

    for ii in range(1, numTracks+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_SelectTrack, ii)

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

        # Extract the track name from the ith track
        print "     Title: %r" % mb.GetResultData(q.MBE_TrackGetTrackName)

        # Extract the track name from the ith track
        print "  Duration: %r" % mb.GetResultInt(q.MBE_TrackGetTrackDuration)


        # Extract the artist id from the ith track
        temp = mb.GetResultData(q.MBE_TrackGetArtistId)
        print "  ArtistId: %r" % mb.GetIDFromURL(temp)

        # Extract the number of albums 
        numAlbums = mb.GetResultInt(q.MBE_GetNumAlbums)
        print "Num Albums: %r" % 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 
            print "     Album: %r" % mb.GetResultData(q.MBE_AlbumGetAlbumName),
            
            temp = mb.GetResultData(q.MBE_AlbumGetAlbumId)
            print " (%s)" % mb.GetIDFromURL(temp),
        
            # How many tracks on this cd
            print "has %s tracks" % mb.GetResultInt(q.MBE_AlbumGetNumTracks)
            
            # Back up one level and go back to the artist level 
            mb.Select(q.MBS_Back)

            print ""
Пример #4
0
    def testException1(self):
        mb = musicbrainz.mb()

        try:
            mb.Query('monkey')
        except musicbrainz.MusicBrainzError:
            pass
        else:
            fail("expected a musicbrainz.MusicBrainzError")
Пример #5
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(6)

    mb.QueryWithArgs(q.MBQ_GetTrackByTRMId, [sys.argv[1]])

    print mb.GetResultRDF().encode('latin-1')

    # Check to see how many items were returned from the server
    numTracks = mb.GetResultInt(q.MBE_GetNumTracks)
    if numTracks < 1:
        print "No tracks found."

    print "Found %d track(s)." % numTracks

    for ii in range(1, numTracks + 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_SelectTrack, ii)

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

        # Extract the track name from the ith track
        print "     Title: %r" % mb.GetResultData(q.MBE_TrackGetTrackName)

        # Extract the track name from the ith track
        print "  Duration: %r" % mb.GetResultInt(q.MBE_TrackGetTrackDuration)

        # Extract the artist id from the ith track
        temp = mb.GetResultData(q.MBE_TrackGetArtistId)
        print "  ArtistId: %r" % mb.GetIDFromURL(temp)

        # Extract the number of albums
        numAlbums = mb.GetResultInt(q.MBE_GetNumAlbums)
        print "Num Albums: %r" % 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
            print "     Album: %r" % mb.GetResultData(q.MBE_AlbumGetAlbumName),

            temp = mb.GetResultData(q.MBE_AlbumGetAlbumId)
            print " (%s)" % mb.GetIDFromURL(temp),

            # How many tracks on this cd
            print "has %s tracks" % mb.GetResultInt(q.MBE_AlbumGetNumTracks)

            # Back up one level and go back to the artist level
            mb.Select(q.MBS_Back)

            print ""
Пример #6
0
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 ""
Пример #7
0
def get_info(trm, info):
    """Get metainfo from musicbrainz.

    Gets metainformation from musicbrainz about a song with the given
    acoustic fingerprint.

    Parameters:
      trm  - A musicbrainz acoustic id
      info - Dictionary with values from tag

    Returns:
      (matches, model) where 'matches' is the number of matches
      musicbrainz returned, and 'model' is a Redland RDF model of the
      returned data.
    """

    print "TRM is", str(trm)
    # Build query
    m = musicbrainz.mb()
    # TODO: Fill me in
    #m.SetServer("www.musicbrainz.org")
    m.SetDepth(2)
    m.SetDebug(10)

    artistname = info.get('artist', '__NULL__')
    albumname  = info.get('album', '__NULL__')
    trackname  = info.get('title', '__NULL__')
    tracknr    = info.get('tracknr', '__NULL__')
    duration   = "__NULL__"

    m.QueryWithArgs(musicbrainz.MBQ_TrackInfoFromTRMId,
                    [trm, artistname, albumname, trackname,
                     tracknr, duration])

    # Check to see how many items were returned from the server
    numTracks = m.GetResultInt(musicbrainz.MBE_GetNumTracks)

    matched_tracks = m.GetResultInt(musicbrainz.MBE_GetNumTracks)

    # Only update if we get a single match
    if matched_tracks == 1:

        querymodel = RDF.Model()
        rdf = m.GetResultRDF()
        parser = RDF.Parser(mime_type="application/rdf+xml")
        enc = codecs.getencoder("latin_1")
        parser.parse_string_into_model(
            querymodel, rdf, "http://example.com/" + enc(trm)[0])

    else:
        querymodel = None

    return matched_tracks, querymodel
Пример #8
0
def main():
    mb = musicbrainz.mb()

    mb.Query(q.MBQ_GetCDTOC)

    first = mb.GetResultInt(q.MBE_TOCGetFirstTrack)
    last = mb.GetResultInt(q.MBE_TOCGetLastTrack)

    for ii in xrange(first, last + 2):
        sectors = mb.GetResultInt1(q.MBE_TOCGetTrackNumSectors, ii)
        offset = mb.GetResultInt1(q.MBE_TOCGetTrackSectorOffset, ii)
        sec = sectors / 75        
        dura = "%d:%02d" % divmod(sec, 60)
        print dura
Пример #9
0
def main():
    mb = musicbrainz.mb()

    mb.Query(q.MBQ_GetCDTOC)

    first = mb.GetResultInt(q.MBE_TOCGetFirstTrack)
    last = mb.GetResultInt(q.MBE_TOCGetLastTrack)

    for ii in xrange(first, last + 2):
        sectors = mb.GetResultInt1(q.MBE_TOCGetTrackNumSectors, ii)
        offset = mb.GetResultInt1(q.MBE_TOCGetTrackSectorOffset, ii)
        sec = sectors / 75
        dura = "%d:%02d" % divmod(sec, 60)
        print dura
Пример #10
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(2)
    mb.SetDebug(1)
    
    mb.QueryWithArgs(q.MBQ_FindAlbumByName, [u'1'])
    print mb.GetResultRDF()
    print "no. of albums:", mb.GetResultInt(q.MBE_GetNumAlbums)
    mb.Select1(q.MBS_SelectAlbum, 1)
    for ii in range(1, mb.GetResultInt(q.MBE_AlbumGetNumTracks) + 1):
        name = mb.GetResultData1(q.MBE_AlbumGetTrackName, ii)
        dura = mb.GetResultData1(q.MBE_AlbumGetTrackDuration, ii)
        track = mb.GetResultData1(q.MBE_AlbumGetTrackNum, ii)
        
        print "track: %s %s %r" % (dura, track, name) 
Пример #11
0
def main():
    artist = "Violent Femmes
    track = "Country Death Song"

    mb = musicbrainz.mb()
    
    mb.SetDepth(2)
    mb.SetDebug(1)

    artistlist = []
    albumlist = []
    
    mb.QueryWithArgs(q.MBQ_FindArtistByName, [artist])
    print mb.GetResultRDF()
    numArtists = mb.GetResultInt(q.MBE_GetNumArtists)
    if numArtists < 1:
        print "No artists found."
    for ii in range(1, numArtists+1):
        mb.Select(q.MBS_Rewind)  
        mb.Select1(q.MBS_SelectArtist, ii)  
        artistlist.append(mb.GetResultData(q.MBE_ArtistGetArtistName))
    print artistlist
    artist = difflib.get_close_matches(artist, artistlist, 1)[0]
    print artist
    
    """
    mb.QueryWithArgs(q.MBQ_FindAlbumByName, [artist, album])
    print mb.GetResultRDF()
    numAlbums = mb.GetResultInt(q.MBE_GetNumAlbums)
    if numAlbums < 1:
        print "No albums found."
    for ii in range(1, numAlbums+1):
        mb.Select(q.MBS_Rewind)  
        mb.Select1(q.MBS_SelectAlbum, ii)  
        albumlist.append(mb.GetResultData(q.MBE_AlbumGetAlbumName))
    album = difflib.get_close_matches(album, albumlist, 1)[0]
    """

    mb.QueryWithArgs(q.MBQ_FindTrackByName, [artist, '', track])
    print mb.GetResultRDF()
Пример #12
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(2)

    while 1:
        print "Insert CD and hit enter..."
        choice = sys.stdin.readline().strip()
        
        mb.Query(q.MBQ_GetCDTOC)

        cdid = mb.GetResultData(q.MBE_TOCGetCDIndexId)
        
        print "querying musicbrainz.org to see if this cd is on there..."
        mb.QueryWithArgs(q.MBQ_GetCDInfoFromCDIndexId, [cdid])
        
        if mb.GetResultInt(q.MBE_GetNumAlbums) == 1:
            print "Yes and here's the info:"
            mb.Select1(q.MBS_SelectAlbum, 1)
            album = mb.GetResultData(q.MBE_AlbumGetAlbumName)
            artist = mb.GetResultData1(q.MBE_AlbumGetArtistName, 1)
            print "\t%s / %s" % (artist, album)
            for ii in range(1, mb.GetResultInt(q.MBE_AlbumGetNumTracks) + 1):
                name = mb.GetResultData1(q.MBE_AlbumGetTrackName, ii)
                dura = mb.GetResultInt1(q.MBE_AlbumGetTrackDuration, ii)
                track = mb.GetResultInt1(q.MBE_AlbumGetTrackNum, ii)
                dura = "%d:%02d" % divmod(int(dura / 1000), 60)
                
                print "\t%02d - %s (%s)" % (track, name, dura) 
            os.system('eject')
            print "Ejecting cd..."
            continue
        
        url = mb.GetWebSubmitURL()
        if url:
            print "opening web browser to '%s'..." % url
            webbrowser.open_new(url)
        else:
            print "Couldn't get cdid... maybe there's no cd in drive?"
Пример #13
0
def main():
    mb = musicbrainz.mb()
    mb.SetDepth(2)

    while 1:
        print "Insert CD and hit enter..."
        choice = sys.stdin.readline().strip()

        mb.Query(q.MBQ_GetCDTOC)

        cdid = mb.GetResultData(q.MBE_TOCGetCDIndexId)

        print "querying musicbrainz.org to see if this cd is on there..."
        mb.QueryWithArgs(q.MBQ_GetCDInfoFromCDIndexId, [cdid])

        if mb.GetResultInt(q.MBE_GetNumAlbums) == 1:
            print "Yes and here's the info:"
            mb.Select1(q.MBS_SelectAlbum, 1)
            album = mb.GetResultData(q.MBE_AlbumGetAlbumName)
            artist = mb.GetResultData1(q.MBE_AlbumGetArtistName, 1)
            print "\t%s / %s" % (artist, album)
            for ii in range(1, mb.GetResultInt(q.MBE_AlbumGetNumTracks) + 1):
                name = mb.GetResultData1(q.MBE_AlbumGetTrackName, ii)
                dura = mb.GetResultInt1(q.MBE_AlbumGetTrackDuration, ii)
                track = mb.GetResultInt1(q.MBE_AlbumGetTrackNum, ii)
                dura = "%d:%02d" % divmod(int(dura / 1000), 60)

                print "\t%02d - %s (%s)" % (track, name, dura)
            os.system('eject')
            print "Ejecting cd..."
            continue

        url = mb.GetWebSubmitURL()
        if url:
            print "opening web browser to '%s'..." % url
            webbrowser.open_new(url)
        else:
            print "Couldn't get cdid... maybe there's no cd in drive?"
Пример #14
0
def main():
    mb = musicbrainz.mb()

    print mb.GetWebSubmitURL()
Пример #15
0
def main():
    device = '/dev/cdrom'

    optlist, args = getopt.getopt(sys.argv[1:], 'd:', ['device='])
    for o, a in optlist:
        if o in ("-d", "--device"):
            device = a

    if not os.path.isfile('cd2trm.ini'):
        writeDefaultConfig()
        raise SystemExit, "Fill out your username/password in 'cd2trm.ini'"
    cp = ConfigParser.ConfigParser()
    cp.read('cd2trm.ini')

    mb = musicbrainz.mb()
    mb.SetServer(cp.get('cd2trm', 'server'), 80)
    mb.SetDepth(2)
    mb.SetDevice(device)
    # mb.SetDebug(1)

    auth(mb, cp)

    while 1:
        trackIds = None
        while not trackIds:
            trackIds = getCDInfo(mb)

        queryItems = []
        for ii in xrange(len(trackIds)):
            ii = ii + 1
            print "Ripping track %d of %d..." % (ii, len(trackIds))

            tempfilename = 'temp%s-%d.wav' % (device.replace('/', '-'), ii)
            #retval = os.system('cdparanoia --abort-on-skip --output-wav %d temp%d.wav' % (ii, ii))
            retval = os.system(
                'cdparanoia --force-cdrom-device=%s --abort-on-skip --output-wav %d-%d[0:40] %s'
                % (device, ii, ii, tempfilename))
            if os.WTERMSIG(retval) == 2:
                raise SystemExit
            if not os.path.isfile(tempfilename):
                print "skipping because cdparanoia couldn't read the disk perfectly"
                continue
            print "Getting TRM for track %d..." % ii

            sig = getSignature(tempfilename, songLength=trackIds[ii - 1][1])

            os.unlink(tempfilename)

            queryItems.append(queryItem % (trackIds[ii - 1][0], sig))

        print "Submiting all track TRM sigs..."

        try:
            myquery = query % ''.join(queryItems)
            mb.Query(myquery)
        except musicbrainz.MusicBrainzError, err:
            if str(
                    err
            ) == "Query failed: Session key expired. Please Authenticate again.":
                auth(mb, cp)
                mb.Query(myquery)
            else:
                raise

        print "Ejecting cd..."
        os.system('eject %s' % device)
Пример #16
0
        def get_trm(self):
            self.init_from_db()
            trm = mime_map[self.au_content_type].get_trm(self.au_audio_clip)

            mb = musicbrainz.mb()
            mb.SetDepth(6)

            mb.QueryWithArgs(MBQ_GetTrackByTRMId, [trm])

            # Check to see how many items were returned from the server
            numTracks = mb.GetResultInt(MBE_GetNumTracks)

            tracks = []
            
            for ii in range(1, numTracks+1):

                track = self.Track()
                
                # Start at the top of the query and work our way down
                mb.Select(MBS_Rewind)  

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

                # Extract the artist name from the ith track
                track.artist = mb.GetResultData(MBE_TrackGetArtistName)

                # Extract the track name from the ith track
                track.title = mb.GetResultData(MBE_TrackGetTrackName)

                # Extract the track name from the ith track
                track.duration = mb.GetResultInt(MBE_TrackGetTrackDuration)

                # Extract the artist id from the ith track
                temp = mb.GetResultData(MBE_TrackGetArtistId)
                track.artist_id = mb.GetIDFromURL(temp)

                tracks.append(track)

                track.albums = []
                
                # Extract the number of albums 
                numAlbums = mb.GetResultInt(MBE_GetNumAlbums)

                for jj in range(1, numAlbums+1):
                    album = self.Album()

                    # Select the jth album in the album list
                    mb.Select1(MBS_SelectAlbum, jj)  

                    # Extract the album name 
                    album.name = mb.GetResultData(MBE_AlbumGetAlbumName),
            
                    temp = mb.GetResultData(MBE_AlbumGetAlbumId)
                    album.id = mb.GetIDFromURL(temp),
        
                    # How many tracks on this cd
                    album.nr_of_tracks = mb.GetResultInt(MBE_AlbumGetNumTracks)
            
                    # Back up one level and go back to the artist level 
                    mb.Select(MBS_Back)  

                    track.albums.append(album)

            return tracks
Пример #17
0
config = ConfigParser.SafeConfigParser()
config.read(os.path.expanduser('~/.cdscrobbler'))

if not config.has_option("CDScrobbler", "username") or not config.has_option("CDScrobbler", "password"):
    print "No complete configuration file found, see the README."
    sys.exit(1)

current = datetime.datetime.utcnow()

scrob = scrobbler.Scrobbler(config.get("CDScrobbler", "username"),
                            config.get("CDScrobbler", "password"),
                            client="cds", version="0.1")
scrob.handshake()

mb = musicbrainz.mb()

def upload_album():
    global current
    count = mb.GetResultInt(MBE_GetNumAlbums)
    if count == 0:
        print "Found no albums"
        return
    if count > 1:
        print "TODO: found %d albums (skipping)" % count
        return

    tracks = []

    mb.Select1(MBS_SelectAlbum, 1)
    album = mb.GetResultData(MBE_AlbumGetAlbumName)
Пример #18
0
def main():
    device = '/dev/cdrom'
    
    optlist, args = getopt.getopt(sys.argv[1:], 'd:', ['device='])
    for o, a in optlist:
        if o in ("-d", "--device"):
            device = a

    if not os.path.isfile('cd2trm.ini'):
        writeDefaultConfig()
        raise SystemExit, "Fill out your username/password in 'cd2trm.ini'"
    cp = ConfigParser.ConfigParser()
    cp.read('cd2trm.ini')
    
    mb = musicbrainz.mb()
    mb.SetServer(cp.get('cd2trm', 'server'), 80)
    mb.SetDepth(2)
    mb.SetDevice(device)
    # mb.SetDebug(1)

    auth(mb, cp)
     
    while 1:
        trackIds = None
        while not trackIds:
            trackIds = getCDInfo(mb)
        
        queryItems = []
        for ii in xrange(len(trackIds)):
            ii = ii + 1
            print "Ripping track %d of %d..." % (ii, len(trackIds))
            
            tempfilename = 'temp%s-%d.wav' % (device.replace('/', '-'), ii)
            #retval = os.system('cdparanoia --abort-on-skip --output-wav %d temp%d.wav' % (ii, ii))
            retval = os.system('cdparanoia --force-cdrom-device=%s --abort-on-skip --output-wav %d-%d[0:40] %s' 
                % (device, ii, ii, tempfilename))
            if os.WTERMSIG(retval) == 2:
                raise SystemExit
            if not os.path.isfile(tempfilename):
                print "skipping because cdparanoia couldn't read the disk perfectly"
                continue
            print "Getting TRM for track %d..." % ii

            sig = getSignature(tempfilename, songLength=trackIds[ii - 1][1])

            os.unlink(tempfilename)

            queryItems.append(queryItem % (trackIds[ii - 1][0], sig))
        
        print "Submiting all track TRM sigs..."
        
        try:
            myquery = query % ''.join(queryItems)
            mb.Query(myquery)
        except musicbrainz.MusicBrainzError, err:
            if str(err) == "Query failed: Session key expired. Please Authenticate again.":
                auth(mb, cp)
                mb.Query(myquery)
            else:
                raise

        print "Ejecting cd..."
        os.system('eject %s' % device)
Пример #19
0
def main():
    mb = musicbrainz.mb()

    print mb.GetWebSubmitURL()