Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions coderlog/Labex_Q1.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
library(httr)

spotify_token <- function() {
endpoint_uri <- "https://accounts.spotify.com/api/token"

body <- list(
grant_type = "client_credentials",
client_id = (Sys.getenv("SPOTIFY_ID")),
client_secret = (Sys.getenv("SPOTIFY_SECRET"))
)

response <- POST(
url = endpoint_uri,
body = body,
add_headers("Content-Type" = "application/x-www-form-urlencoded"),
encode = "form"
)

status_code <- status_code(response)
token <- content(response)$access_token
bearer_token <- paste("Bearer", token)

result <- list(
status_code <- status_code,
token <- bearer_token
)

return(result)
}

22 changes: 22 additions & 0 deletions coderlog/Labex_Q1_tests.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
library(testthat)

rm(list = ls())
file_path <- "Labex_Q1.R"
source(file_path)

result <- spotify_token()

#--------------------------------Test 1.1--------------------------------#
test_that("Global Workspace'de spotify_token adlı bir değişken olmalı", {
expect_true(exists("spotify_token"))
})

#--------------------------------Test 1.2--------------------------------#
test_that("spotify_token adlı değişken bir 'function' tipinde olmalı", {
expect_true(is.function(spotify_token))
})

#--------------------------------Test 1.3--------------------------------#
test_that("spotify_token() çağrıldığında döndürdüğü çıktı bir liste olmalı", {
expect_true(is.list(result))
})
68 changes: 68 additions & 0 deletions coderlog/Labex_Q2.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
library(httr)

#----------------- Spotify Token Alma -----------------#
spotify_token <- function() {
endpoint_uri <- "https://accounts.spotify.com/api/token"

body <- list(
grant_type = "client_credentials",
client_id = (Sys.getenv("SPOTIFY_ID")),
client_secret = (Sys.getenv("SPOTIFY_SECRET"))
)

response <- POST(
url = endpoint_uri,
body = body,
add_headers("Content-Type" = "application/x-www-form-urlencoded"),
encode = "form"
)

status_code <- status_code(response)
token <- content(response)$access_token
bearer_token <- paste("Bearer",token)

result <- list(
status_code = status_code,
token = bearer_token
)

return(result)
}
#token <- spotify_token()
#print(token)



#----------------- Sanatçı Adı ile Çıkan Sonuçları Listeleme -----------------#
spotify_search_artist <- function(artist_name) {
if(!is.character(artist_name)) stop("Artist name must be character type.");

search_url <- paste0(
"https://api.spotify.com/v1/search?q=", URLencode(artist_name),
"&type=artist&limit=",5)
token <- spotify_token()

response <- GET(
url = search_url,
add_headers("Authorization" = token$token)
)

status_code <- status_code(response)
search_result <- content(response, type = "application/json")
artists <- search_result$artists$items[seq_len(5)]

search_results <- data.frame(
artist = sapply(artists, function(x) x$name),
id = sapply(artists, function(x) x$id)
)

result <- list(
status_code = status_code,
search_results = search_results
)

return(result)
}
artists <- spotify_search_artist("Eminem")
print(artists)

22 changes: 22 additions & 0 deletions coderlog/Labex_Q2_tests.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
library(testthat)

rm(list = ls())
file_path <- "Labex_Q2.R"
source(file_path)

result <- spotify_search_artist("The Doors")

#--------------------------------Test 2.1--------------------------------#
test_that("Global Workspace’de spotify_search_artist adlı bir değişken olmalı.",{
expect_true(exists("spotify_search_artist"))
})

#--------------------------------Test 2.2--------------------------------#
test_that("spotify_search_artist adlı değişkenin tipi “function” olmalı.",{
expect_is(spotify_search_artist, "function")
})

#--------------------------------Test 2.3--------------------------------#
test_that("spotify_search_artist() herhangi bir artist ismi ile çağrıldığında döndürdüğü çıktı bir liste olmalı.",{
expect_is(result, "list")
})
101 changes: 101 additions & 0 deletions coderlog/Labex_Q3.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
library(httr)

#----------------- Spotify Token Alma -----------------#
spotify_token <- function() {
endpoint_uri <- "https://accounts.spotify.com/api/token"

body <- list(
grant_type = "client_credentials",
client_id = (Sys.getenv("SPOTIFY_ID")),
client_secret = (Sys.getenv("SPOTIFY_SECRET"))
)

response <- POST(
url = endpoint_uri,
body = body,
add_headers("Content-Type" = "application/x-www-form-urlencoded"),
encode = "form"
)

status_code <- status_code(response)
token <- content(response)$access_token
bearer_token <- paste("Bearer",token)

result <- list(
status_code = status_code,
token = bearer_token
)

return(result)
}
#token <- spotify_token()
#print(token)



#----------------- Sanatçı Adı ile Çıkan Sonuçları Listeleme -----------------#
spotify_search_artist <- function(artist_name) {
if(!is.character(artist_name)) stop("Artist name must be character type.");

search_url <- paste0(
"https://api.spotify.com/v1/search?q=", URLencode(artist_name),
"&type=artist&limit=",5)
token <- spotify_token()

response <- GET(
url = search_url,
add_headers("Authorization" = token$token)
)

status_code <- status_code(response)
search_result <- content(response, type = "application/json")
artists <- search_result$artists$items[seq_len(5)]

search_results <- data.frame(
artist = sapply(artists, function(x) x$name),
id = sapply(artists, function(x) x$id)
)

result <- list(
status_code = status_code,
search_results = search_results
)

return(result)
}
#artists <- spotify_search_artist("Eminem")
#print(artists)



#----------------- Sanatçı ID ile Popüler Şarkıları Çekme -----------------#
spotify_artist_top_tracks <- function(artist_id) {
endpoint_uri <- paste0("https://api.spotify.com/v1/artists/", artist_id,
"/top-tracks?market=US")
token <- spotify_token()

response <- GET(
url = endpoint_uri,
add_headers('Authorization' = token$token)
)

status_code <- status_code(response)
search_result <- content(response, type = "application/json")

tracks_list <- lapply(search_result$tracks, function(track) {
list(
id = track$id,
name = track$name,
artist = track$artists[[1]]$name,
album = track$album$name,
year = substr(track$album$release_date, 1, 10)
)
})

tracks <- list(
status_code <- status_code,
resultdf <- as.data.frame(do.call(rbind, tracks_list), stringAsFactors=FALSE)
)

return(tracks)
}
22 changes: 22 additions & 0 deletions coderlog/Labex_Q3_tests.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
library(testthat)

rm(list = ls())
file_path <- "Labex_Q3.R"
source(file_path)

result <- spotify_artist_top_tracks("0TnOYISbd1XYRBk9myaseg")

#--------------------------------Test 1.1--------------------------------#
test_that("Global Workspace’de spotify_artist_top_tracks adlı bir değişken olmalı.",{
expect_true(exists("spotify_artist_top_tracks"))
})

#--------------------------------Test 1.2--------------------------------#
test_that("spotify_artist_top_tracks adlı değişkenin tipi “function” olmalı.",{
expect_is(spotify_artist_top_tracks, "function")
})

#--------------------------------Test 1.3--------------------------------#
test_that("spotify_artist_top_tracks() herhangi bir artist_id ile çağrıldığında döndürdüğü çıktı bir list olmalı.",{
expect_true(is.list(result))
})
115 changes: 115 additions & 0 deletions coderlog/Labex_Q4.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
library(httr)

#----------------- Spotify Token Alma -----------------#
spotify_token <- function() {
endpoint_uri <- "https://accounts.spotify.com/api/token"

body <- list(
grant_type = "client_credentials",
client_id = (Sys.getenv("SPOTIFY_ID")),
client_secret = (Sys.getenv("SPOTIFY_SECRET"))
)

response <- POST(
url = endpoint_uri,
body = body,
add_headers("Content-Type" = "application/x-www-form-urlencoded"),
encode = "form"
)

status_code <- status_code(response)

if (status_code == 200) {
token <- content(response)$access_token
bearer_token <- paste("Bearer",token)

result <- list(
status_code = status_code,
token = bearer_token
)

return(result)
} else
{
error <- content(response)
return(error)
}
}
token <- spotify_token()
print(token)



#----------------- Sanatçı Adı ile Çıkan Sonuçları Listeleme -----------------#
spotify_search_artist <- function(artist_name) {
if(!is.character(artist_name)) stop("Artist name must be character type.");

search_url <- paste0(
"https://api.spotify.com/v1/search?q=", URLencode(artist_name),
"&type=artist&limit=",5)
token <- spotify_token()

response <- GET(
url = search_url,
add_headers("Authorization" = token$token)
)

status_code <- status_code(response)

if (status_code == 200) {
search_result <- content(response, type = "application/json")
artists <- search_result$artists$items[seq_len(5)]

search_results <- data.frame(
artist = sapply(artists, function(x) x$name),
id = sapply(artists, function(x) x$id)
)

result <- list(
status_code = status_code,
search_results = search_results
)

return(result)
}
else {
error <- content(response)
return(error)
}
}
artists <- spotify_search_artist("Eminem")
print(artists)



#----------------- Sanatçı ID ile Popüler Şarkıları Çekme -----------------#
spotify_artist_top_tracks <- function(artist_id) {
endpoint_uri <- paste0("https://api.spotify.com/v1/artists/", artist_id,
"/top-tracks?market=US")
token <- spotify_token()

response <- GET(
url = endpoint_uri,
add_headers('Authorization' = token$token)
)

status_code <- status_code(response)
search_result <- content(response, type = "application/json")

tracks_list <- lapply(search_result$tracks, function(track) {
list(
id = track$id,
name = track$name,
artist = track$artists[[1]]$name,
album = track$album$name,
year = substr(track$album$release_date, 1, 10)
)
})

tracks <- list(
status_code <- status_code,
resultdf <- as.data.frame(do.call(rbind, tracks_list), stringAsFactors=FALSE)
)

return(tracks)
}