Сначала скажем, что я действительно новичок в R. Вчера я слушал мою любимую радиостанцию. поскольку между ними было так много рекламы, я решил соскрести музыку c, которую они играют каждый день, со своей веб-страницы. Так что я могу слушать его без рекламы.
Я написал сценарий на R, который берет название и исполнителя каждой песни, которую радио играет с их веб-сайта:
### Radio2 playlist scraper ###
#Loading packages#
install.packages("rvest")
library(rvest)
install.packages("dplyr")
library("dplyr")
install.packages("remotes")
remotes::install_github("charlie86/spotifyr")
library(spotifyr)
install.packages('knitr', dependencies = TRUE)
library(knitr)
#Get playlist url #
url <- "https://www.nporadio2.nl/playlist"
#Read HTML code from pagen#
webpage <- read_html(url)
#Get Artist and Title#
artist <- html_nodes(webpage, '.fn-artist')
title <- html_nodes(webpage, '.fn-song')
#Artist and Title to text#
artist_text <- html_text(artist)
title_text <- html_text(title)
#Artist and Title to dataframe#
artiest <- as.data.frame(artist_text)
titel_text <- as.data.frame(title_text)
#Make one dataframe#
radioplaylist <- cbind(artiest$artist_text, titel_text$title_text)
radioplaylist <- as.data.frame(radioplaylist)
radioplaylist
#Rename columns#
colnames(radioplaylist)[1] <- "Artiest"
colnames(radioplaylist)[2] <- "Titel"
radioplaylist
#Remove duplicate songs#
radioplaylistuniek <- radioplaylist %>% distinct(Artiest, Titel, .keep_all = TRUE)
#Write to csv#
date <- Sys.Date()
date
write.csv(radioplaylistuniek, paste0("C://Users//Kantoor//Radio2playlists//playlist - ", date, ".csv"))
#Set spotify API#
Sys.setenv(SPOTIFY_CLIENT_ID = 'caxxxxxxxxxxxxxxxxxx')
Sys.setenv(SPOTIFY_CLIENT_SECRET = '7exxxxxxxxxxxxx')
access_token <- get_spotify_access_token()
clientID <- "xxxxxxxxxxxxxxx"
secret <- "xxxxxxxxxxxxxx"
library(httr)
library(magrittr)
library(rvest)
library(ggplot2)
response = POST(
'https://accounts.spotify.com/api/token',
accept_json(),
authenticate(clientID, secret),
body = list(grant_type = 'client_credentials'),
encode = 'form',
verbose()
)
token = content(response)$access_token
authorization.header = paste0("Bearer ", token)
#Get track info#
call1 <- GET(url = paste("https://api.spotify.com/v1/search?q=track:Ready%20To%20Go%20artist:Republica&type=track&limit=1"), config = add_headers(authorization = authorization.header))
call1
# JSON to TXT#
jsonResponseParsed <- content(call1, as="parsed") #JSON response structured into parsed data
jsonResponseParsed
# Extract track uri#
uri <- jsonResponseParsed$tracks$items[[1]]$uri
uri
# Add track to playlist #
POST(url= "https://api.spotify.com/v1/playlists/29fotSbWUGP1NmWbtGRaG6/tracks?uris=spotify%3Atrack%3A5Qt8U8Suu7MFH1VcJr17Td", config = add_headers(c('Accept="application/json"', 'Content-type= "application/JSON"', 'Authorization="Bearer BQDX9jbz99bCt6TXd7OSaaj12CgCh3s5F6KBwb-ATnv7AFkSnjuEASS9FOW0zx-xxxxxxxxxxxxxx"')))
Чего я хочу?
Я хочу автоматически добавлять каждую песню, которую я выбрал, в свой плейлист Spotify
Что у меня есть на данный момент?
Я создал приложение через developer.spotify.com. Для каждой песни я могу получить уникальный uri, который необходим для добавления песни в мой список воспроизведения.
Где я застрял?
Я не могу добавить песню в мой плейлист с ПОЧТОВЫМ ЗАПРОСОМ. Я получаю сообщение «Токен не предоставлен».
Я создал образец POST REQUEST через https://developer.spotify.com/console/post-playlist-tracks/?playlist_id=&position=&uris=, который аккуратно добавляет песню в мой список воспроизведения. Код:
POST https://api.spotify.com/v1/playlists/{playlist_id}/tracks
curl -X "POST" "https://api.spotify.com/v1/playlists/29fotSbWUGP1NmWbtGRaG6/tracks?uris=spotify%3Atrack%3A5Qt8U8Suu7MFH1VcJr17Td" -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer BQDX9jbz99bCt6TXd7OSaaj12CgCh3s5F6KBwb-ATxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Как настроить правильный запрос POST?
Может ли кто-нибудь помочь мне с последней частью, чтобы настроить правильный запрос POST ?