如何设置POST请求以添加数字以使用R标记播放列表

问题描述 投票:0回答:1

[首先说我对R真的很陌生。昨天我听了我最喜欢的广播电台。因为之间有太多广告,所以我决定从他们的网页上抓取他们每天播放的音乐。这样我就可以在没有任何广告的情况下收听它。

我用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 REQUEST,它将歌曲整齐地添加到我的播放列表中。代码是:

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请求吗?

[首先说我对R真的很陌生。昨天我听了我最喜欢的广播电台。因为之间有太多广告,所以我决定从...

r post spotify httr
1个回答
0
投票

@ webb谢谢。现在可以使用下面的最后一个代码:

© www.soinside.com 2019 - 2024. All rights reserved.