rspotify 1.6.1 → 1.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 072acdba8d1a732336c1ce986f03694d9279cacf
4
- data.tar.gz: c140a7c62c9b8b73169abe527a21fa86257f4967
3
+ metadata.gz: f1f17aa294f27089ff560a5646618f5dcfee6690
4
+ data.tar.gz: 07b166ed7b15ce4b29e970d35cd939b78c85a0e8
5
5
  SHA512:
6
- metadata.gz: 576e165c656683421697f7fb9a1669ab1118dcdb69c68a9361d41c27281d31056d631bca53ed5947c3a5d6da731512dde0e2a69dc073d0beebc894aec46b1aea
7
- data.tar.gz: 9665298242913480d10d9c80d8a58be669538b73da98029233264aa829e030460a6f72f5769c2de65d7adad38e0d1668cfdbdda92bbf29ad513824aa2f2d2e7d
6
+ metadata.gz: bdea8017b299b4ce48e689355cffc1d0840ca97e28b77e7ea021b4d67798f27d7f10d079efdb43cb473c28189d7fbf739b4b375dd729e2c2d1fd802fc475718d
7
+ data.tar.gz: 5a153f38605d25c63cedaa1f0fcad6f2ec957d20f26c57931fd3fc40751de6eefe4b11c8dc3b66ca62ac62c6582ad16fc63ab6506c79f24dcf8eca33407cc847
data/README.md CHANGED
@@ -27,7 +27,7 @@ Or install it yourself as:
27
27
 
28
28
  ## Usage
29
29
 
30
- Directly access Spotify public data such as albums, tracks, artists and users:
30
+ Directly access Spotify public data such as albums, tracks, artists, playlists and users:
31
31
 
32
32
  ```ruby
33
33
  require 'rspotify'
@@ -55,6 +55,9 @@ do_i_wanna_know.duration_ms #=> 272386
55
55
  do_i_wanna_know.track_number #=> 1
56
56
  do_i_wanna_know.preview_url #=> "https://p.scdn.co/mp3-preview/<id>"
57
57
 
58
+ playlists = RSpotify::Playlist.search('Indie')
59
+ playlists.first.name #=> "The Indie Mix"
60
+
58
61
  # You can search within other types too
59
62
  albums = RSpotify::Album.search('The Wall')
60
63
  tracks = RSpotify::Track.search('Thriller')
@@ -83,14 +86,14 @@ my_tracks = RSpotify::Track.find(ids)
83
86
  my_tracks.size #=> 2
84
87
  ```
85
88
 
86
- Some data require authentication to be accessed, such as playlists. You can easily get your credentials [here](https://developer.spotify.com/my-applications).
89
+ Some data require authentication to be accessed, such as playlists' details. You can easily get your credentials [here](https://developer.spotify.com/my-applications).
87
90
 
88
91
  Then just copy and paste them like so:
89
92
 
90
93
  ```ruby
91
94
  RSpotify.authenticate("<your_client_id>", "<your_client_secret>")
92
95
 
93
- # Now you can access any public playlist and much more
96
+ # Now you can access any public playlist in detail and much more
94
97
 
95
98
  playlist = RSpotify::Playlist.find('wizzler', '00wHcTN0zQiun4xri9pmvX')
96
99
  playlist.name #=> "Movie Soundtrack Masterpieces"
data/lib/rspotify/base.rb CHANGED
@@ -56,10 +56,10 @@ module RSpotify
56
56
  # Returns array of RSpotify objects matching the query, ordered by popularity
57
57
  #
58
58
  # @param query [String] The search query's keywords. See the q description in {https://developer.spotify.com/web-api/search-item here} for details.
59
- # @param types [String] Valid types are: album, artist and track. Separate multiple types with commas.
59
+ # @param types [String] Valid types are: album, artist, track and playlist. Separate multiple types with commas.
60
60
  # @param limit [Integer] Maximum number of objects to return. Maximum: 50. Default: 20.
61
61
  # @param offset [Integer] The index of the first object to return. Use with limit to get the next set of objects. Default: 0.
62
- # @return [Array<Base>]
62
+ # @return [Array<Album>, Array<Artist>, Array<Track>, Array<Playlist>]
63
63
  #
64
64
  # @example
65
65
  # artists = RSpotify::Base.search('Arctic', 'artist')
@@ -29,7 +29,7 @@ module RSpotify
29
29
  Playlist.new json
30
30
  end
31
31
 
32
- # Returns array of playlist objects matching the query
32
+ # Returns array of Playlist objects matching the query
33
33
  #
34
34
  # @param query [String] The search query's keywords. See the q description in {https://developer.spotify.com/web-api/search-item here} for details.
35
35
  # @param limit [Integer] Maximum number of playlists to return. Maximum: 50. Default: 20.
@@ -37,12 +37,12 @@ module RSpotify
37
37
  # @return [Array<Playlist>]
38
38
  #
39
39
  # @example
40
- # playlists = RSpotify::Playlist.search('Soundtrack')
40
+ # playlists = RSpotify::Playlist.search('Indie')
41
41
  # playlists.size #=> 20
42
42
  # playlists.first.class #=> RSpotify::Playlist
43
- # playlists.first.name #=> ""
43
+ # playlists.first.name #=> "The Indie Mix"
44
44
  #
45
- # playlists = RSpotify::Playlist.search('Soundtrack', limit: 10)
45
+ # playlists = RSpotify::Playlist.search('Indie', limit: 10)
46
46
  # playlists.size #=> 10
47
47
  def self.search(query, limit: 20, offset: 0)
48
48
  super(query, 'playlist', limit: limit, offset: offset)
@@ -1,3 +1,3 @@
1
1
  module RSpotify
2
- VERSION = '1.6.1'
2
+ VERSION = '1.7.0'
3
3
  end
@@ -60,6 +60,38 @@ describe RSpotify::Playlist do
60
60
  end
61
61
  end
62
62
 
63
+ describe 'Playlist::search' do
64
+ it 'should search for the right playlists' do
65
+ playlists = VCR.use_cassette('playlist:search:Indie') do
66
+ RSpotify::Playlist.search('Indie')
67
+ end
68
+ expect(playlists) .to be_an Array
69
+ expect(playlists.size) .to eq 20
70
+ expect(playlists.first) .to be_an RSpotify::Playlist
71
+ expect(playlists.map(&:name)) .to include('The Indie Mix', 'Indie Folk', 'Alt/Indie')
72
+ end
73
+
74
+ it 'should accept additional options' do
75
+ playlists = VCR.use_cassette('playlist:search:Indie:limit:10') do
76
+ RSpotify::Playlist.search('Indie', limit: 10)
77
+ end
78
+ expect(playlists.size) .to eq 10
79
+ expect(playlists.map(&:name)) .to include('The Indie Mix', 'Indie Folk')
80
+
81
+ playlists = VCR.use_cassette('playlist:search:Indie:offset:10') do
82
+ RSpotify::Playlist.search('Indie', offset: 10)
83
+ end
84
+ expect(playlists.size) .to eq 20
85
+ expect(playlists.map(&:name)) .to include('Indie Workout', 'Indie Brunch')
86
+
87
+ playlists = VCR.use_cassette('playlist:search:Indie:offset:10:limit:10') do
88
+ RSpotify::Playlist.search('Indie', limit: 10, offset: 10)
89
+ end
90
+ expect(playlists.size) .to eq 10
91
+ expect(playlists.map(&:name)) .to include('Infinite Indie')
92
+ end
93
+ end
94
+
63
95
  describe 'Playlist#tracks' do
64
96
  it 'should fetch more tracks correctly' do
65
97
  tracks = VCR.use_cassette('playlist:tracks:118430647:starred') do
@@ -0,0 +1,113 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.spotify.com/v1/search?q=Indie&type=playlist&limit=20&offset=0
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ accept-encoding:
13
+ - gzip, deflate
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ server:
22
+ - nginx
23
+ date:
24
+ - Wed, 12 Nov 2014 21:45:01 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - keep-alive
31
+ keep-alive:
32
+ - timeout=600
33
+ vary:
34
+ - Accept-Encoding
35
+ cache-control:
36
+ - public, max-age=7200
37
+ access-control-allow-headers:
38
+ - Accept, Authorization, Origin, Content-Type
39
+ access-control-allow-origin:
40
+ - "*"
41
+ access-control-max-age:
42
+ - '604800'
43
+ access-control-allow-methods:
44
+ - GET, POST, OPTIONS, PUT, DELETE
45
+ access-control-allow-credentials:
46
+ - 'true'
47
+ x-content-type-options:
48
+ - nosniff
49
+ strict-transport-security:
50
+ - max-age=31536000;
51
+ content-encoding:
52
+ - gzip
53
+ body:
54
+ encoding: ASCII-8BIT
55
+ string: !binary |-
56
+ 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
110
+ DQY/kD9++/E/8EK7Sh1OAAA=
111
+ http_version: '1.1'
112
+ recorded_at: Wed, 12 Nov 2014 21:45:01 GMT
113
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,89 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.spotify.com/v1/search?q=Indie&type=playlist&limit=10&offset=0
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ accept-encoding:
13
+ - gzip, deflate
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ server:
22
+ - nginx
23
+ date:
24
+ - Wed, 12 Nov 2014 21:45:01 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - keep-alive
31
+ keep-alive:
32
+ - timeout=600
33
+ vary:
34
+ - Accept-Encoding
35
+ cache-control:
36
+ - public, max-age=7200
37
+ access-control-allow-headers:
38
+ - Accept, Authorization, Origin, Content-Type
39
+ access-control-allow-origin:
40
+ - "*"
41
+ access-control-max-age:
42
+ - '604800'
43
+ access-control-allow-methods:
44
+ - GET, POST, OPTIONS, PUT, DELETE
45
+ access-control-allow-credentials:
46
+ - 'true'
47
+ x-content-type-options:
48
+ - nosniff
49
+ strict-transport-security:
50
+ - max-age=31536000;
51
+ content-encoding:
52
+ - gzip
53
+ body:
54
+ encoding: ASCII-8BIT
55
+ string: !binary |-
56
+ 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
87
+ http_version: '1.1'
88
+ recorded_at: Wed, 12 Nov 2014 21:45:02 GMT
89
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,125 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.spotify.com/v1/search?q=Indie&type=playlist&limit=20&offset=10
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ accept-encoding:
13
+ - gzip, deflate
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ server:
22
+ - nginx
23
+ date:
24
+ - Wed, 12 Nov 2014 21:45:02 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - keep-alive
31
+ keep-alive:
32
+ - timeout=600
33
+ vary:
34
+ - Accept-Encoding
35
+ cache-control:
36
+ - public, max-age=7200
37
+ access-control-allow-headers:
38
+ - Accept, Authorization, Origin, Content-Type
39
+ access-control-allow-origin:
40
+ - "*"
41
+ access-control-max-age:
42
+ - '604800'
43
+ access-control-allow-methods:
44
+ - GET, POST, OPTIONS, PUT, DELETE
45
+ access-control-allow-credentials:
46
+ - 'true'
47
+ x-content-type-options:
48
+ - nosniff
49
+ strict-transport-security:
50
+ - max-age=31536000;
51
+ content-encoding:
52
+ - gzip
53
+ body:
54
+ encoding: ASCII-8BIT
55
+ string: !binary |-
56
+ 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
122
+ VycuExrN7nKDa/smBfI///Lz/2kbni7GUQAA
123
+ http_version: '1.1'
124
+ recorded_at: Wed, 12 Nov 2014 21:45:02 GMT
125
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,91 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.spotify.com/v1/search?q=Indie&type=playlist&limit=10&offset=10
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ accept:
11
+ - "*/*; q=0.5, application/xml"
12
+ accept-encoding:
13
+ - gzip, deflate
14
+ user-agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ server:
22
+ - nginx
23
+ date:
24
+ - Wed, 12 Nov 2014 21:45:02 GMT
25
+ content-type:
26
+ - application/json; charset=utf-8
27
+ transfer-encoding:
28
+ - chunked
29
+ connection:
30
+ - keep-alive
31
+ keep-alive:
32
+ - timeout=600
33
+ vary:
34
+ - Accept-Encoding
35
+ cache-control:
36
+ - public, max-age=7200
37
+ access-control-allow-headers:
38
+ - Accept, Authorization, Origin, Content-Type
39
+ access-control-allow-origin:
40
+ - "*"
41
+ access-control-max-age:
42
+ - '604800'
43
+ access-control-allow-methods:
44
+ - GET, POST, OPTIONS, PUT, DELETE
45
+ access-control-allow-credentials:
46
+ - 'true'
47
+ x-content-type-options:
48
+ - nosniff
49
+ strict-transport-security:
50
+ - max-age=31536000;
51
+ content-encoding:
52
+ - gzip
53
+ body:
54
+ encoding: ASCII-8BIT
55
+ string: !binary |-
56
+ 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
88
+ FGf1EigAAA==
89
+ http_version: '1.1'
90
+ recorded_at: Wed, 12 Nov 2014 21:45:03 GMT
91
+ recorded_with: VCR 2.9.3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspotify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilherme Sad
@@ -174,6 +174,10 @@ files:
174
174
  - spec/vcr_cassettes/authenticate_5ac1cda2ad354aeaa1ad2693d33bb98c.yml
175
175
  - spec/vcr_cassettes/playlist_find_118430647_starred.yml
176
176
  - spec/vcr_cassettes/playlist_find_wizzler_00wHcTN0zQiun4xri9pmvX.yml
177
+ - spec/vcr_cassettes/playlist_search_Indie.yml
178
+ - spec/vcr_cassettes/playlist_search_Indie_limit_10.yml
179
+ - spec/vcr_cassettes/playlist_search_Indie_offset_10.yml
180
+ - spec/vcr_cassettes/playlist_search_Indie_offset_10_limit_10.yml
177
181
  - spec/vcr_cassettes/playlist_tracks_118430647_starred.yml
178
182
  - spec/vcr_cassettes/track_find_3jfr0TF6DQcOLat8gGn7E2.yml
179
183
  - spec/vcr_cassettes/track_find_4oI9kesyxHUr8fqiLd6uO9.yml
@@ -236,6 +240,10 @@ test_files:
236
240
  - spec/vcr_cassettes/authenticate_5ac1cda2ad354aeaa1ad2693d33bb98c.yml
237
241
  - spec/vcr_cassettes/playlist_find_118430647_starred.yml
238
242
  - spec/vcr_cassettes/playlist_find_wizzler_00wHcTN0zQiun4xri9pmvX.yml
243
+ - spec/vcr_cassettes/playlist_search_Indie.yml
244
+ - spec/vcr_cassettes/playlist_search_Indie_limit_10.yml
245
+ - spec/vcr_cassettes/playlist_search_Indie_offset_10.yml
246
+ - spec/vcr_cassettes/playlist_search_Indie_offset_10_limit_10.yml
239
247
  - spec/vcr_cassettes/playlist_tracks_118430647_starred.yml
240
248
  - spec/vcr_cassettes/track_find_3jfr0TF6DQcOLat8gGn7E2.yml
241
249
  - spec/vcr_cassettes/track_find_4oI9kesyxHUr8fqiLd6uO9.yml