You can install the package from the CRAN repository:
install.packages("DSpoty")
or try the development version from GitHub:
devtools::install_github('https://github.com/AlbertoAlmuinha/DSpoty')
You need to get your Spotify API Client ID and Secret ID. You can get yours here . The best way to authenticate is to set your ID’s to system environment variables (client_id and secret_id). If you prefer, you can use your ID’s en each function to call the function get_spotify_access_token, but it’s not recomendable.
Sys.setenv(client_id = 'client_id') Sys.setenv(client_secret = 'client_secret') access_token <- DSpoty::get_spotify_access_token()
You can get an artist Spotify information with the function get_artists. This function returns data like the name of the artist, links to open in spotify, popularity, number of followers or musical genre.
artist <- get_artist('Arctic Monkeys')
artist_name |
artist_uri |
artist_img |
num_followers |
spotify_url |
popularity |
musical_genre |
---|---|---|---|---|---|---|
Arctic Monkeys |
7Ln80lUS6He07XvHI8qqHH |
https://i.scdn.co/image/ed0552e9746ed2bbf04ae4bcb5525700ca31522d |
8780891 |
86 |
garage_rock-modern_rock-permanent_wave-rock-sheffield_indie |
Another option is to search artists by musical genre. You can choose the number of artists returned and the year. The information returned is the same that with get_artists function.
artists_by_genre <- get_artists_by_genre('rock', limit = 20, year = 2019)
artist_name |
artist_uri |
artist_img |
num_followers |
spotify_url |
popularity |
musical_genre |
---|---|---|---|---|---|---|
Queen |
1dfeR4HaWDbWqFHLkxsg1d |
https://i.scdn.co/image/b040846ceba13c3e9c125d68389491094e7f2982 |
22469906 |
93 |
glam_rock-rock |
|
The Beatles |
3WrFJ7ztbogyGnTHbHJFl2 |
https://i.scdn.co/image/6b2a709752ef9c7aaf0d270344157f6cd2e0f1a7 |
14688077 |
91 |
british_invasion-merseybeat-psychedelic_rock-rock |
|
Twenty One Pilots |
3YQKmKGau1PzlVlkL1iodx |
https://i.scdn.co/image/19e8f3bc875b7a4b9cf0041a5ee696c4be5478aa |
15682408 |
88 |
modern_rock-rock |
|
Maroon 5 |
04gDigrS5kc9YWfZHwBETP |
https://i.scdn.co/image/608c7b23420c9556a7eabd9097f7e171a91d3871 |
21450933 |
94 |
pop-pop_rock |
|
Imagine Dragons |
53XhwfbYqKCa1cC15pYq2q |
https://i.scdn.co/image/01b36ca0f45f2f15117022a2754287a6ca1acdcc |
24260851 |
92 |
modern_rock |
Finally, you can search related artists. In this case, you need the artist ID (and not the name) to use the function. You can get this information from the function get_artists or artists_by_genre. You will get the top 20 related artist.
related_artists<-get_related_artists(artist_uri = artist$artist_uri)
artist_name |
artist_uri |
popularity |
url_img |
---|---|---|---|
The Kooks |
1GLtl8uqKmnyCWxHmw9tL4 |
73 |
https://i.scdn.co/image/0a3dfed5bce0e6d14703011ec52a42ae719c0d4b |
Alex Turner |
1ctkBmvz80MGyi72Ix055S |
66 |
https://i.scdn.co/image/ab67616d0000b273672951d44a35cb08092f2c1f |
The Last Shadow Puppets |
2Z7UcsdweVlRbAk5wH5fsf |
65 |
https://i.scdn.co/image/1e721c9502da1663fe9dd0b9f8a90519546f0a9f |
Blossoms |
22RISwgVJyZu9lpqAcv1F5 |
66 |
https://i.scdn.co/image/b0722b13be43495b793d3911ef90403d62eb5d7b |
Kasabian |
11wRdbnoYqRddKBrpHt4Ue |
69 |
https://i.scdn.co/image/8ef02a528dfa5496a410aa80e8b0316574ca95b7 |
You can get the whole discography of an artist in few seconds with the function get_artists_albums. You must select one of the next options to the parameter album_type (default option is album):
albums <- get_artist_albums('Arctic Monkeys') albums <- get_artist_albums('Arctic Monkeys', album_type = 'appears_on', limit = 20)
album_uri |
album_name |
rel_album_artista |
album_type |
album_img |
album_url |
release_date |
release_date_precision |
total_tracks |
available_markets |
popularity |
---|---|---|---|---|---|---|---|---|---|---|
1nXwgYOolvutEaVWfGbP4w |
Isles Of Wonder: Music For The Opening Ceremony Of The London 2012 Olympic Games |
appears_on |
compilation |
https://i.scdn.co/image/852299f998fe2b5c1e34450600c5bc8e4d432eef |
2012-01-01 |
day |
36 |
CA |
14 |
|
1GvWtv7m3NX1vZ1Lk4i13M |
The BRIT Awards 2012 |
appears_on |
compilation |
https://i.scdn.co/image/209b4066a831af140c232d4bf6a3eadab013945d |
2012-01-01 |
day |
61 |
GB |
29 |
|
5GaeDKlnZggETclP0Y3FfE |
Domino Sampler ’11 |
appears_on |
compilation |
https://i.scdn.co/image/ab67616d0000b273d20f68791889d57d61a8400e |
2011-12-20 |
day |
18 |
CA |
9 |
|
4jqIQ4srPIBcTcPdGFxdGF |
All The Rage |
appears_on |
compilation |
https://i.scdn.co/image/ab67616d0000b2737c4f2e686a2fa77227fb5b53 |
2008-02-01 |
day |
15 |
AD |
29 |
|
3Vx8n3WCI0s0l2mvS0IMg3 |
Again & Again |
appears_on |
single |
https://i.scdn.co/image/ab67616d0000b273549cf94db1362c3939806e7e |
2008 |
year |
4 |
JP |
0 |
Firstly, you can get all the tracks of an artist. This can be done with the next function:
tracks <- get_artist_tracks('Arctic Monkeys')
track_name |
track_uri |
album_uri |
artist_uri |
disc_number |
track_duration_ms |
explicit |
spotify_url |
track_mp3_30s |
track_number |
---|---|---|---|---|---|---|---|---|---|
Star Treatment |
0FgNSsaSZTvbLXUumSO8LQ |
1jeMiSeSnNS0Oys375qegp |
7Ln80lUS6He07XvHI8qqHH |
1 |
354640 |
FALSE |
1 |
||
One Point Perspective |
2AKwcNHeGAqCpD6etK425X |
1jeMiSeSnNS0Oys375qegp |
7Ln80lUS6He07XvHI8qqHH |
1 |
208640 |
FALSE |
2 |
||
American Sports |
0mQiDbYxHElUp1eNpLZXaY |
1jeMiSeSnNS0Oys375qegp |
7Ln80lUS6He07XvHI8qqHH |
1 |
158040 |
FALSE |
3 |
||
Tranquility Base Hotel & Casino |
7co8zvT6HJuyT81IDukyID |
1jeMiSeSnNS0Oys375qegp |
7Ln80lUS6He07XvHI8qqHH |
1 |
212093 |
TRUE |
4 |
||
Golden Trunks |
3NmndGYOIYocA5OTHMVoaw |
1jeMiSeSnNS0Oys375qegp |
7Ln80lUS6He07XvHI8qqHH |
1 |
173626 |
FALSE |
5 |
You can also get all the tracks features information (like danceability, mode, acousticness, speechness, valence, loudness…) for an artist:
features <- get_artist_tracks_features('Arctic Monkeys')
track_uri |
danceability |
energy |
key |
loudness |
mode |
speechiness |
acousticness |
instrumentalness |
liveness |
valence |
tempo |
time_signature |
popularity |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0FgNSsaSZTvbLXUumSO8LQ |
0.581 |
0.767 |
7 |
-5.026 |
0 |
0.0527 |
0.24300 |
1.31e-03 |
0.141 |
0.6730 |
120.070 |
4 |
60 |
2AKwcNHeGAqCpD6etK425X |
0.714 |
0.585 |
8 |
-4.570 |
1 |
0.0419 |
0.05700 |
4.44e-03 |
0.144 |
0.8420 |
77.104 |
4 |
59 |
0mQiDbYxHElUp1eNpLZXaY |
0.372 |
0.865 |
7 |
-4.288 |
0 |
0.0513 |
0.00169 |
2.93e-03 |
0.127 |
0.5940 |
176.689 |
3 |
53 |
7co8zvT6HJuyT81IDukyID |
0.584 |
0.835 |
9 |
-4.326 |
0 |
0.0297 |
0.04110 |
1.47e-02 |
0.199 |
0.7810 |
142.200 |
4 |
60 |
3NmndGYOIYocA5OTHMVoaw |
0.492 |
0.564 |
2 |
-5.811 |
1 |
0.0278 |
0.12900 |
1.73e-05 |
0.131 |
0.0896 |
92.544 |
4 |
54 |
You can also search for tracks recommendations based on another track. You can choose the number of recommended tracks returned:
recommended_songs <- get_tracks_recommendations_by_name('Arctic Monkeys', 'Do I Wanna Know?', limit = 10)
track_name |
popularity |
artist_name |
track_duration_ms |
track_mp3_30s |
track_url |
artist_url |
artist_uri |
track_uri |
---|---|---|---|---|---|---|---|---|
Let It Happen |
76 |
Tame Impala |
467586 |
NULL |
5INjqkS1o8h1imAzPqGZBb |
2X485T9Z5Ly0xyaghN73ed |
||
Somebody Told Me |
70 |
The Killers |
197160 |
NULL |
0C0XlULifJtAgn6ZNCW2eu |
59XNy4523UcEvQfYM8fdQB |
||
Clint Eastwood |
69 |
Gorillaz |
340920 |
3AA28KZvwAUcZuOKwyblJQ |
7yMiX7n9SBvadzox8T5jzT |
|||
I Want It All |
62 |
Arctic Monkeys |
185406 |
7Ln80lUS6He07XvHI8qqHH |
1j9rezdE3YeC7yktZXC1em |
|||
24/7 |
59 |
The Neighbourhood |
219973 |
77SW9BnxLY8rJ0RciFqkHh |
4Cdb1dE3pfiWlqnAIcImyQ |
You can also search an spotify item (artist, album or track) by name with the function get_spotify_item. We can use it in four different ways:
search_artist <- get_spotify_item(name = 'Arctic Monkeys', type = 'artist')
artist_name |
artist_uri |
artist_img |
num_followers |
spotify_url |
popularity |
musical_genre |
---|---|---|---|---|---|---|
Arctic Monkeys |
7Ln80lUS6He07XvHI8qqHH |
https://i.scdn.co/image/ed0552e9746ed2bbf04ae4bcb5525700ca31522d |
8780891 |
86 |
garage_rock-modern_rock-permanent_wave-rock-sheffield_indie |
search_album <- get_spotify_item(name = 'Nuclear', type = 'album')
album_uri |
album_name |
album_type |
album_img |
album_url |
release_date |
release_date_precision |
total_tracks |
available_markets |
popularity |
---|---|---|---|---|---|---|---|---|---|
3tgTuhdTPvaka7LUU4gzdb |
Bang! Pow! Boom! Nuclear |
album |
https://i.scdn.co/image/ab67616d0000b273b6e01aed96a03d8706c91931 |
2010-04-01 |
day |
23 |
AD |
49 |
search_album_with_limit <- get_spotify_item(name = 'Nuclear', type = 'album', limit = 5)
album_uri |
album_name |
album_type |
album_img |
album_url |
release_date |
release_date_precision |
total_tracks |
available_markets |
popularity |
---|---|---|---|---|---|---|---|---|---|
3tgTuhdTPvaka7LUU4gzdb |
Bang! Pow! Boom! Nuclear |
album |
https://i.scdn.co/image/ab67616d0000b273b6e01aed96a03d8706c91931 |
2010-04-01 |
day |
23 |
AD |
49 |
|
0am24qfT1RsxWY2bxhcrJB |
Not Animal |
album |
https://i.scdn.co/image/ab67616d0000b2733365b7ae7c208abc36ede955 |
2008-10-07 |
day |
12 |
AD |
49 |
|
2azrcCM9HIS232wphRkTTG |
Nuclear Bonds |
single |
https://i.scdn.co/image/ab67616d0000b273d0a1f24ca9fb845889433591 |
2015-10-13 |
day |
9 |
AD |
41 |
|
1T2uKSyUf7DBWOABtsmYLM |
Nuclear |
album |
https://i.scdn.co/image/ab67616d0000b27313c4ca893a92d3a81e0cb3e8 |
2019-03-22 |
day |
12 |
AD |
71 |
|
3MDHsd4SZfMtCdM8Clihqp |
THE DUST OF RETREAT (EXPLICIT) |
album |
https://i.scdn.co/image/ab67616d0000b273c455808106bb65b0cff01bde |
2005 |
year |
12 |
US |
39 |
search_album_2 <- get_spotify_item(artist = 'Leiva', album = 'Nuclear', type = 'album')
album_uri |
album_name |
album_type |
album_img |
album_url |
release_date |
release_date_precision |
total_tracks |
available_markets |
popularity |
---|---|---|---|---|---|---|---|---|---|
1T2uKSyUf7DBWOABtsmYLM |
Nuclear |
album |
https://i.scdn.co/image/ab67616d0000b27313c4ca893a92d3a81e0cb3e8 |
2019-03-22 |
day |
12 |
AD |
71 |
search_track <- get_spotify_item(name = 'Do I Wanna Know?' , type = 'track')
track_name |
track_uri |
artist_name |
artist_uri |
disc_number |
track_duration_ms |
explicit |
spotify_url |
track_mp3_30s |
track_number |
---|---|---|---|---|---|---|---|---|---|
Do I Wanna Know? |
5FVd6KXrgO9B3JPmC8OPst |
Arctic Monkeys |
7Ln80lUS6He07XvHI8qqHH |
1 |
272394 |
FALSE |
1 |