Ejemplo n.º 1
0
 def testArtistSearch(self):
     ''' test that the client works using an arbitrary API. 
         In this case, use artist search.
     '''
     response = py7D.request('artist', 'search', q='Pink')
     assert response['response']['@status'] == 'ok', (
             "API Status error. Response: %s" % response)        
Ejemplo n.º 2
0
def artist_search(*args, **kwargs):

    kwargs['page'] = str(kwargs.get('page', 1))
    kwargs['pageSize'] = str(kwargs.get('pageSize', 10))

    results = py7D.request('artist', 'search', **kwargs)
    return results['response']['searchResults']
Ejemplo n.º 3
0
def print_api(method, function, access_token, **kwargs):
    if access_token:
        rc = py7D.oauth_request(method, function, access_token, **kwargs)
    else:
        rc = py7D.request(method, function, **kwargs)

    pprint(rc['http_headers'])
    print json.dumps(rc['response'], indent=4)
Ejemplo n.º 4
0
def bandura_search():
    global g_7digital_cur
    global g_7digital_nexts
    global g_song_features
    global g_nexts_features

    print "bandura_search"

    if request.method == "POST":
        print "'bandura search' called by POST"

        #updateParamsFromSite( request.form )

        context = packContext( 0 );

        search_term = request.form["search_term"]
        if search_term != '':

            # seach the exact term in the DB
            best_match = [MX_traverse.get_song_id_by_token(search_term)]

            if best_match[0]=='':
                # if the exact term wasn't found in the DB, perform a more flexible search using the EchoNest API
                g_7digital_cur = ''
                n_search_results = 2
                while best_match[0]=='' and n_search_results<=1000:
                    n_search_results *= 5              
                    z = py7D.request('track', 'search', q=search_term, pagesize=n_search_results)
                    if int(z['response']['searchResults']['totalItems'])>0:
                        search_results = z['response']['searchResults']['searchResult']
                        search_results2 = list()
                        print "possible matches: " + str(len(search_results))
                        for result in search_results:
                            record=dict()
                            record['track_7digitalid']  = result['track']['@id']
                            record['title']             = result['track']['title']
                            record['artist']            = result['track']['artist']['name']
                            print record['track_7digitalid'], record['title'], record['artist']
                            search_results2.append(record)
                        # intersect the EchoNest results with our DB    
                        best_match = MX_traverse.findInSongsDB( [x['track_7digitalid'] for x in search_results2] )

            if best_match[0]!='':
                g_next_choice = 0
                g_7digital_nexts = [[best_match[0]]]
                g_nexts_features = list()
                g_nexts_features.append( tuple(MX_traverse.get_song_by_7digital( g_7digital_nexts[0][g_next_choice] )) )
                print "best match: " + g_nexts_features[g_next_choice][0]
            else:
                print "no match..."
        else:
            print "No search term..."
    else:
        context = dict()
        "'bandura_search' called by GET"
    render_template("bandura.html", **context);
    return redirect("/bandura")
Ejemplo n.º 5
0
def find_release(search_string):
    ''' return JSON of a search for a release '''
    
    response = py7D.request('release', 'search', q=search_string, pageSize=5)
    
    headers = response['http_headers']
    results = response['response']['searchResults']['searchResult']
    
    return results
Ejemplo n.º 6
0
 def GET(self):
     user_data = web.input()
     songId = user_data.id
     try:
         trackDetails = py7D.request('track', 'details', trackId=songId, imageSize=200, country='US')
     except:
         artwork = "static/artworknotfound.png"
     else:
         artwork = trackDetails.items()[0][1].items()[5][1].items()[9][1].items()[7][1]
     return artwork
Ejemplo n.º 7
0
def print_api(method, function, access_token, **kwargs):
    if access_token:
        rc = py7D.oauth_request(method,
                                function,
                                access_token,
                                **kwargs)
    else:
        rc = py7D.request(method, function, **kwargs)

    pprint(rc['http_headers'])
    print json.dumps(rc['response'], indent=4)
Ejemplo n.º 8
0
def track_previews():

    response = py7D.request('track', 'search', q='Aja', pageSize=3)
    tracks = response['response']['searchResults']['searchResult']
    

    for track in tracks:
        print track
        track['preview'] = py7D.preview_url(track['track']['@id'])
    
    return tracks
Ejemplo n.º 9
0
 def GET(self):
     user_data = web.input()
     songId = user_data.id
     try:
         trackDetails = py7D.request('track', 'details', trackId=songId, imageSize=200, country='US')
     except:
         artist_and_track = "Artist and Track name not found @ 7Digital"
     else:
         songTitle = trackDetails.items()[0][1].items()[5][1].items()[1][1]
         artist = trackDetails.items()[0][1].items()[5][1].items()[3][1].items()[1][1]
         release_date = trackDetails.items()[0][1].items()[5][1].items()[9][1].items()[8][1].split('T')[0]
         artist_and_track = "Artist: " + artist + "<br/>" + "Track: " + songTitle + "<BR/>" + "Release date: " + release_date
     return artist_and_track
Ejemplo n.º 10
0
def TrackPreviews(artistName):
    print "Finding available song previews..."

    response = py7D.request('track', 'search', q=artistName, pageSize=100)
    tracks = response['response']['searchResults']['searchResult']

    trackData = []

    for track in tracks:
        trackDataEntry = TrackDataEntry()
        trackDataEntry._trackTitle          = track['track']['title']

        trackDataEntry._trackTitle = trackDataEntry._trackTitle.replace('/', '')
        trackDataEntry._trackTitle = filter(lambda x: x in string.printable, trackDataEntry._trackTitle)

        trackDataEntry._trackReleaseDate    = track['track']['release']['releaseDate'][0:4]
        trackDataEntry._track7DId           = track['track']['@id']

        trackData.append(trackDataEntry)

    return trackData
Ejemplo n.º 11
0
 def testApi(self):
     response = py7D.request('status', None)
     assert response['response']['@status'] == 'ok', (
             "API Status error. Response: %s" % response)
Ejemplo n.º 12
0
def guess_song():
    count = 0
    while count < 3:
        try:
            songs = pysong.search(
                title=request.form["song"],
                buckets=["id:7digital-US", "tracks", "song_discovery"],
                limit=True,
                results=50,
                sort="song_hotttnesss-desc",
            )
            song = songs[0]
            break
        except:
            count += 1
            if count == 3:
                return render_template("index.html", cant_find=True)
        print "Timed out, try again"
    artist_x = song.artist_name
    # pp.pprint([(song.title, song.artist_name) for song in songs[:5]])
    # pp.pprint(song.get_tracks('7digital-US'))
    for_song = song.get_tracks("7digital-US")[0]
    cover_url = for_song["release_image"]
    # print cover_url
    foreign_id = for_song["foreign_id"].split(":")[-1]
    # print foreign_id
    try:
        response = py7D.request("track", "details", trackID=str(foreign_id), pageSize=3)
        rel_year = response["response"]["track"]["release"]["releaseDate"].split("-")[0]
    except:
        return render_template("index.html", cant_find=True)

    listen = py7D.preview_url(foreign_id)
    print
    print listen
    print
    # pp.pprint(response['response']['track'])
    a_sum = song.audio_summary
    duration = a_sum["duration"]
    features, viz_dict = get_features(song)
    if not features:
        return render_template("index.html", cant_find=True)
    year = model.predict(features)
    year = str(int(year[0]))
    print year, rel_year
    return render_template(
        "index.html",
        song_name=songs[0].title,
        predicted_year=year,
        artist=artist_x,
        actual_year=rel_year,
        img_url=cover_url,
        dancy=viz_dict["dancy"],
        energy=viz_dict["energy"],
        loudness=viz_dict["loudness"],
        tempo=viz_dict["tempo"],
        tempo_rate=viz_dict["tempo_rate"],
        key=viz_dict["key"],
        a_hot=viz_dict["artist_hottness"],
        s_hot=viz_dict["song_hotttnesss"],
        a_fam=viz_dict["artist_familiarity"],
        song_currency=viz_dict["song_currency"],
        valence=viz_dict["valence"],
        speech=viz_dict["speech"],
        acousticness=viz_dict["acousticness"],
        liveness=viz_dict["liveness"],
        song_disc=viz_dict["song_discovery"],
        mp3=listen,
    )
Ejemplo n.º 13
0
def guess_song():
    count = 0
    while count < 3:
        try:
            songs = pysong.search(
                title=request.form['song'],
                buckets=['id:7digital-US', 'tracks', 'song_discovery'],
                limit=True,
                results=50,
                sort="song_hotttnesss-desc")
            song = songs[0]
            break
        except:
            count += 1
            if count == 3:
                return render_template('index.html', cant_find=True)
        print "Timed out, try again"
    artist_x = song.artist_name
    # pp.pprint([(song.title, song.artist_name) for song in songs[:5]])
    # pp.pprint(song.get_tracks('7digital-US'))
    for_song = song.get_tracks('7digital-US')[0]
    cover_url = for_song['release_image']
    # print cover_url
    foreign_id = for_song['foreign_id'].split(":")[-1]
    # print foreign_id
    try:
        response = py7D.request('track',
                                'details',
                                trackID=str(foreign_id),
                                pageSize=3)
        rel_year = response['response']['track']['release'][
            'releaseDate'].split("-")[0]
    except:
        return render_template('index.html', cant_find=True)

    listen = py7D.preview_url(foreign_id)
    print
    print listen
    print
    # pp.pprint(response['response']['track'])
    a_sum = song.audio_summary
    duration = a_sum['duration']
    features, viz_dict = get_features(song)
    if not features:
        return render_template('index.html', cant_find=True)
    year = model.predict(features)
    year = str(int(year[0]))
    print year, rel_year
    return render_template('index.html',
                           song_name=songs[0].title,
                           predicted_year=year,
                           artist=artist_x,
                           actual_year=rel_year,
                           img_url=cover_url,
                           dancy=viz_dict['dancy'],
                           energy=viz_dict['energy'],
                           loudness=viz_dict['loudness'],
                           tempo=viz_dict['tempo'],
                           tempo_rate=viz_dict['tempo_rate'],
                           key=viz_dict['key'],
                           a_hot=viz_dict["artist_hottness"],
                           s_hot=viz_dict["song_hotttnesss"],
                           a_fam=viz_dict["artist_familiarity"],
                           song_currency=viz_dict["song_currency"],
                           valence=viz_dict["valence"],
                           speech=viz_dict["speech"],
                           acousticness=viz_dict["acousticness"],
                           liveness=viz_dict["liveness"],
                           song_disc=viz_dict["song_discovery"],
                           mp3=listen)