2016-10-19 11 views
0

Это наблюдение вопрос: Accessing Spotify API for Multiple Artists in RПолучить аудио Атрибуты для всех песен Spotify По исполнителям

Моя цель здесь, чтобы извлечь несколько художников из API Spotify, а затем получить все песни по исполнителю с их атрибутами.

Так это то, что мы делали до сих пор в результате к предыдущему вопросу:

Retrieve информацию о художнике (а не песни):

artistName = 'ytcracker' 

HeaderValue = paste0('Bearer ', mytoken) 

URI = paste0('https://api.spotify.com/v1/search?query=', artistName,'&offset=0&limit=20&type=artist') 
response2 = GET(url = URI, add_headers(Authorization = HeaderValue)) 
Artist = content(response2) 
Artist 

Несколько художников, если вы знаете, художник ID из приведенного выше кода.

URI = paste0('https://api.spotify.com/v1/artists?ids=', Artist$artists$items[[2]]$id,",", '1Mxqyy3pSjf8kZZL4QVxS0') 
response2 = GET(url = URI, add_headers(Authorization = HeaderValue)) 
Artists = content(response2) 

Как извлечь несколько песен артистов с их атрибутами?

Это ссылка для аудио-функций:

https://developer.spotify.com/web-api/get-several-audio-features/

Это моя попытка:

artistID = '1Mxqyy3pSjf8kZZL4QVxS0' 
HeaderValue = paste0('Bearer ', mytoken) 
URI = paste0('https://api.spotify.com/v1/audio-features', artistID) 
response2 = GET(url = URI, add_headers(Authorization = HeaderValue)) 
Artist = content(response2) 
Artist 

Ответ:

raw(0) 

https://github.com/rweyant/spotifyr

Это хорошая рекомендация, но я не могу установить свои учетные данные даже после открытия библиотеки «httr».

set_credentials(client_id=CLIENTID,client_secret=CLIENTSECRET) 

Ошибка: не удалось найти функцию "set_credentials"

Любая помощь велик, спасибо!

После доработки с начала раздела с учетными данными API:

clientID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' 

response = POST(
    'https://accounts.spotify.com/api/token', 
    accept_json(), 
    authenticate(clientID, secret), 
    body = list(grant_type = 'client_credentials'), 
    encode = 'form', 
    verbose() 
) 

mytoken = content(response)$access_token 
+0

@ Hack-R, если вы думаете о чем-либо, потому что я знаю, что вы смогли решить предыдущий вопрос. Благодаря! –

+0

Вероятно, это значит, что библиотека не была установлена ​​и загружена правильно, я протестировал это, и зависимости не будут рекурсивно установлены. В новой сессии R это должно работать 'install.пакеты (с ('HTTR', 'jsonlite', 'RSelenium', 'RCurl', 'XML', 'stringr', 'стринги', 'plyr'), отд = TRUE); devtools :: install_github ('rweyant/spotifyr') ' – OdeToMyFiddle

+0

Это ошибка, которая возникает, когда я это делаю: ошибка в назначении (« client_redirect_uri », client_redirect_uri, envir = .GlobalEnv): отсутствует аргумент« client_redirect_uri », без значения по умолчанию –

ответ

1
getFeatures<-function(spotify_ID,token){ 
    req <- httr::GET(paste0("https://api.spotify.com/v1/audio-features/",spotify_ID), add_headers(Authorization = HeaderValue)) 
    json1<-httr::content(req) 
    dados=data.frame(id=json1$id, 
        danceability=json1$danceability, 
        energy=json1$energy, 
        key=json1$key, 
        loudness=json1$loudness, 
        mode=json1$mode, 
        speechiness=json1$speechiness, 
        acousticness=json1$acousticness, 
        instrumentalness=json1$instrumentalness, 
        liveness=json1$liveness, 
        valence=json1$valence, 
        tempo=json1$tempo, 
        duration_ms=json1$duration_ms, 
        time_signature=json1$time_signature, 
        uri=json1$uri, 
        analysis_url=json1$analysis_url,stringsAsFactors = F) 
    return(dados) 
} 

KanyeFatherStretch <- getFeatures("4KW1lqgSr8TKrvBII0Brf8") 

Try this if it helps 
+0

Можете ли вы предоставить образец токена, это может быть случайное число, но как бы применить это к этому? Я получаю сообщение об ошибке: «Ошибка в токене $ sign: $ operator недопустима для атомных векторов» –

+0

Также, когда я применяю его так, как у вас есть, он указывает: Ошибка в структуре (list (method = method, url = url, headers = keep_last (headers),: отсутствует аргумент «token», без значения по умолчанию –

+0

httr :: config (token = token) изменить это с помощью кода авторизации Oauth, пожалуйста ... Этот токен здесь относится к токену o-auth вы получаете сообщение об аутентификации с помощью Spotify API. –

1

Я не особо знаком с HTTP-запросов в R, но если следующая строка зависит от конкатенации ...

URI = paste0('https://api.spotify.com/v1/audio-features', artistID) 

вам понадобится обратная косая черта с первым аргументом, чтобы второй параметр правильно соединял URI.

Кроме того, the Audio Features endpoint takes a Spotify ID for a track, rather than an artist. То, что я бы рекомендовал вам, это захватить 10 лучших треков для интересующего вас исполнителя и использовать конечную точку Get Several Audio Features, чтобы получить звуковые функции для всех треков. Это должно дать вам довольно хорошее представление о звуке художника. Вы можете использовать средние характеристики, если вам нужно меньшее представление, но имейте в виду, что усреднение, вероятно, уменьшит точность данных.

+0

Я попытался сделать это в исходном вопросе, и он дал мне вывод «raw (0)». Вы знаете, как это сделать на уровне трека. Все еще возникают проблемы с получением аудио-атрибутов. Спасибо за уступку. –