rspotify 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +9 -2
- data/lib/rspotify/artist.rb +1 -1
- data/lib/rspotify/connection.rb +2 -4
- data/lib/rspotify/playlist.rb +2 -1
- data/lib/rspotify/user.rb +69 -3
- data/lib/rspotify/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fd61ef8b246df135f26baba22ee01c8c8b95aea
|
4
|
+
data.tar.gz: 2e9b132363b9250147ef8e1f94dd6c5a1ed4b79f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c30d2c943bd75df12a5215cb1f459bbef43298c740513f0757a0b0e49475047ef6e5758c47f5a98a25972e1f6ce6afb10cac8d43d6ab807c6e66bc08e9d2bad6
|
7
|
+
data.tar.gz: ec69eab471a3dbd4149f48bc2d319c229a3333671467f74bae73cb13b2db3c4367a2bd0d1fe676e1c7a630e3c45a61e29aad5df24e3133112c6bcc62e22d940f
|
data/README.md
CHANGED
@@ -123,7 +123,7 @@ RSpotify::authenticate("<your_client_id>", "<your_client_secret>")
|
|
123
123
|
# config/initializers/omniauth.rb
|
124
124
|
|
125
125
|
Rails.application.config.middleware.use OmniAuth::Builder do
|
126
|
-
provider :spotify, "<your_client_id>", "<your_client_secret>", scope: 'user-read-email playlist-modify-public'
|
126
|
+
provider :spotify, "<your_client_id>", "<your_client_secret>", scope: 'user-read-email playlist-modify-public user-library-read user-library-modify'
|
127
127
|
end
|
128
128
|
```
|
129
129
|
|
@@ -153,7 +153,7 @@ class UsersController < ApplicationController
|
|
153
153
|
spotify_user = RSpotify::User.new(request.env['omniauth.auth'])
|
154
154
|
# Now you can access user's private data, create playlists and much more
|
155
155
|
|
156
|
-
# Access private data
|
156
|
+
# Access private data
|
157
157
|
spotify_user.country #=> "US"
|
158
158
|
spotify_user.email #=> "example@email.com"
|
159
159
|
|
@@ -164,6 +164,13 @@ class UsersController < ApplicationController
|
|
164
164
|
tracks = RSpotify::Track.search('Know')
|
165
165
|
playlist.add_tracks!(tracks)
|
166
166
|
playlist.tracks.first.name #=> "Somebody That I Used To Know"
|
167
|
+
|
168
|
+
# Access and modify user's music library
|
169
|
+
spotify_user.save_tracks!(tracks)
|
170
|
+
spotify_user.saved_tracks.size #=> 20
|
171
|
+
spotify_user.remove_tracks!(tracks)
|
172
|
+
|
173
|
+
# Check doc for more
|
167
174
|
end
|
168
175
|
end
|
169
176
|
```
|
data/lib/rspotify/artist.rb
CHANGED
@@ -68,7 +68,7 @@ module RSpotify
|
|
68
68
|
@albums = json['items'].map { |a| Album.new a }
|
69
69
|
end
|
70
70
|
|
71
|
-
# Returns array of similar artists. Similarity is based on analysis of the Spotify community’s {http://news.spotify.com/se/2010/02/03/related-artists listening history}
|
71
|
+
# Returns array of similar artists. Similarity is based on analysis of the Spotify community’s {http://news.spotify.com/se/2010/02/03/related-artists listening history}
|
72
72
|
#
|
73
73
|
# @return [Array<Artist>]
|
74
74
|
#
|
data/lib/rspotify/connection.rb
CHANGED
@@ -7,7 +7,7 @@ module RSpotify
|
|
7
7
|
API_URI = 'https://api.spotify.com/v1/'
|
8
8
|
AUTHORIZE_URI = 'https://accounts.spotify.com/authorize'
|
9
9
|
TOKEN_URI = 'https://accounts.spotify.com/api/token'
|
10
|
-
VERBS = %w(get post)
|
10
|
+
VERBS = %w(get post put delete)
|
11
11
|
|
12
12
|
def self.auth_header
|
13
13
|
authorization = Base64.strict_encode64 "#{@client_id}:#{@client_secret}"
|
@@ -15,7 +15,7 @@ module RSpotify
|
|
15
15
|
end
|
16
16
|
private_class_method :auth_header
|
17
17
|
|
18
|
-
# Authenticates access to restricted data. Requires {https://developer.spotify.com/my-applications user credentials}
|
18
|
+
# Authenticates access to restricted data. Requires {https://developer.spotify.com/my-applications user credentials}
|
19
19
|
#
|
20
20
|
# @param client_id [String]
|
21
21
|
# @param client_secret [String]
|
@@ -34,14 +34,12 @@ module RSpotify
|
|
34
34
|
end
|
35
35
|
|
36
36
|
VERBS.each do |verb|
|
37
|
-
# RSpotify::{get,post}
|
38
37
|
define_singleton_method verb do |path, *params|
|
39
38
|
url = API_URI + path
|
40
39
|
response = RestClient.send(verb, url, *params)
|
41
40
|
JSON.parse response unless response.empty?
|
42
41
|
end
|
43
42
|
|
44
|
-
# RSpotify::auth_{get,post}
|
45
43
|
define_singleton_method "auth_#{verb}" do |path, *params|
|
46
44
|
auth_header = { 'Authorization' => "Bearer #{@client_token}" }
|
47
45
|
params << auth_header
|
data/lib/rspotify/playlist.rb
CHANGED
@@ -55,7 +55,7 @@ module RSpotify
|
|
55
55
|
#
|
56
56
|
# @param tracks [Array<Track>] Tracks to be added. Maximum: 100 per request
|
57
57
|
# @param position [Integer, NilClass] The position to insert the tracks, a zero-based index. Default: tracks are appended to the playlist
|
58
|
-
# @return [
|
58
|
+
# @return [Array<Track>] The tracks added
|
59
59
|
#
|
60
60
|
# @example
|
61
61
|
# tracks = RSpotify::Track.search('Know', 30)
|
@@ -79,6 +79,7 @@ module RSpotify
|
|
79
79
|
|
80
80
|
User.oauth_post(@owner.id, url, {})
|
81
81
|
@tracks = nil
|
82
|
+
tracks
|
82
83
|
end
|
83
84
|
|
84
85
|
# When an object is obtained undirectly, Spotify usually returns a simplified version of it.
|
data/lib/rspotify/user.rb
CHANGED
@@ -56,7 +56,6 @@ module RSpotify
|
|
56
56
|
end
|
57
57
|
private_class_method :oauth_header
|
58
58
|
|
59
|
-
# User::oauth_{get,post}
|
60
59
|
RSpotify::VERBS.each do |verb|
|
61
60
|
define_singleton_method "oauth_#{verb}" do |user_id, path, *params|
|
62
61
|
params << oauth_header(user_id)
|
@@ -114,8 +113,75 @@ module RSpotify
|
|
114
113
|
# playlists.first.class #=> RSpotify::Playlist
|
115
114
|
# playlists.first.name #=> "Movie Soundtrack Masterpieces"
|
116
115
|
def playlists
|
117
|
-
|
118
|
-
|
116
|
+
json = RSpotify.auth_get("users/#{@id}/playlists")
|
117
|
+
json['items'].map { |p| Playlist.new p }
|
118
|
+
end
|
119
|
+
|
120
|
+
# Remove tracks from the user’s “Your Music” library.
|
121
|
+
#
|
122
|
+
# @param tracks [Array<Track>] The tracks to remove. Maximum: 50.
|
123
|
+
# @return [Array<Track>] The tracks removed.
|
124
|
+
#
|
125
|
+
# @example
|
126
|
+
# tracks = user.saved_tracks
|
127
|
+
#
|
128
|
+
# user.saved_tracks.size #=> 20
|
129
|
+
# user.remove_tracks!(tracks)
|
130
|
+
# user.saved_tracks.size #=> 0
|
131
|
+
def remove_tracks!(tracks)
|
132
|
+
tracks_ids = tracks.map(&:id)
|
133
|
+
url = "me/tracks?ids=#{tracks_ids.join ','}"
|
134
|
+
User.oauth_delete(@id, url)
|
135
|
+
tracks
|
136
|
+
end
|
137
|
+
|
138
|
+
# Save tracks to the user’s “Your Music” library.
|
139
|
+
#
|
140
|
+
# @param tracks [Array<Track>] The tracks to save. Maximum: 100.
|
141
|
+
# @return [Array<Track>] The tracks saved.
|
142
|
+
#
|
143
|
+
# @example
|
144
|
+
# tracks = RSpotify::Track.search('Know')
|
145
|
+
#
|
146
|
+
# user.saved_tracks.size #=> 0
|
147
|
+
# user.save_tracks!(tracks)
|
148
|
+
# user.saved_tracks.size #=> 20
|
149
|
+
def save_tracks!(tracks)
|
150
|
+
tracks_ids = tracks.map(&:id)
|
151
|
+
url = "me/tracks"
|
152
|
+
request_body = tracks_ids.inspect
|
153
|
+
User.oauth_put(@id, url, request_body)
|
154
|
+
tracks
|
155
|
+
end
|
156
|
+
|
157
|
+
# Returns the tracks saved in the Spotify user’s “Your Music” library
|
158
|
+
#
|
159
|
+
# @param limit [Integer] Maximum number of tracks to return. Minimum: 1. Maximum: 50. Default: 20.
|
160
|
+
# @param offset [Integer] The index of the first track to return. Use with limit to get the next set of tracks. Default: 0.
|
161
|
+
# @return [Array<Track>]
|
162
|
+
#
|
163
|
+
# @example
|
164
|
+
# tracks = user.saved_tracks
|
165
|
+
# tracks.size #=> 20
|
166
|
+
# tracks.first.name #=> "Do I Wanna Know?"
|
167
|
+
def saved_tracks(limit: 20, offset: 0)
|
168
|
+
url = "me/tracks?limit=#{limit}&offset=#{offset}"
|
169
|
+
json = User.oauth_get(@id, url)
|
170
|
+
json['items'].map { |t| Track.new t['track'] }
|
171
|
+
end
|
172
|
+
|
173
|
+
# Check if tracks are already saved in the Spotify user’s “Your Music” library
|
174
|
+
#
|
175
|
+
# @param tracks [Array<Track>] The tracks to check. Maximum: 50.
|
176
|
+
# @return [Array<Boolean>] Array of booleans, in the same order in which the tracks were specified.
|
177
|
+
#
|
178
|
+
# @example
|
179
|
+
# tracks = RSpotify::Track.search('Know')
|
180
|
+
# user.saved_tracks?(tracks) #=> [true, false, true...]
|
181
|
+
def saved_tracks?(tracks)
|
182
|
+
tracks_ids = tracks.map(&:id)
|
183
|
+
url = "me/tracks/contains?ids=#{tracks_ids.join ','}"
|
184
|
+
User.oauth_get(@id, url)
|
119
185
|
end
|
120
186
|
|
121
187
|
# Returns a hash containing all user attributes
|
data/lib/rspotify/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspotify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guilherme Sad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: omniauth-oauth2
|