rspotify 2.6.0 → 2.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8bc7c509b39843b4eadaaf91148cfe735a850908
4
- data.tar.gz: e2757b03a0eb8dcd677e10f5317a558485701a1a
2
+ SHA256:
3
+ metadata.gz: 4fb04473ae856fc8d68bd65c38b26a6955e8e6277f33af5f52b9d37955573a3d
4
+ data.tar.gz: c0ee2f61094d7b81257ca7a6fbab69dddd17b751dafdc7342993dfea31422f60
5
5
  SHA512:
6
- metadata.gz: 30531c4d431ae5774e792c31b1684b500acc43438e605ccdcd22aeb8a5d6d4e332a9c9fbdd8cca9ef0bbe7e366c7e7f3e78db1619724fa3b7ed228dea0cfbd2d
7
- data.tar.gz: 6f4a5d9428e7161e3102f44e4ec993e165f2aa44cd494f3e539a0ad48736becd302c8196b5d92887b4328fd87efac14b9514a763b8e370cbf13cfcf563243e28
6
+ metadata.gz: e53b486c8784406e0782085d939bfefd8703992465f34dc46638e75dffeaf8180d13212fd04cd9182b939997d7c66d21f1ddb5ddce8ad01b6d5308358c6c70be
7
+ data.tar.gz: b7912c6db89a35abff7e5349b02b9cff4240ca8d9baa7d3b8f870d3544020714000f69fdfcdcbc709f8a73476e2370a3c3beecbd3cceb601c2d3640782f076f4
@@ -0,0 +1 @@
1
+ custom: https://www.buymeacoffee.com/guilhermesad
@@ -30,7 +30,6 @@ module RSpotify
30
30
  warn 'Spotify API does not support finding several users simultaneously'
31
31
  return false
32
32
  end
33
- limit = (type == 'album' ? 20 : 50)
34
33
  find_many(ids, type, market: market)
35
34
  when String
36
35
  id = ids
@@ -126,9 +125,9 @@ module RSpotify
126
125
 
127
126
  # Generate an embed code for an album, artist or track.
128
127
  # @param [Hash] options
129
- # @option options [Fixnum] :width the width of the frame
130
- # @option options [Fixnum] :height the height of the frame
131
- # @option options [Fixnum] :frameborder the frameborder of the frame
128
+ # @option options [Integer] :width the width of the frame
129
+ # @option options [Integer] :height the height of the frame
130
+ # @option options [Integer] :frameborder the frameborder of the frame
132
131
  # @option options [Boolean] :allowtransparency toggle frame transparency
133
132
  # @option options [nil|String|Symbol] :view specific view option for iframe
134
133
  # @option options [nil|String|Symbol] :theme specific theme option for iframe
@@ -143,7 +142,7 @@ module RSpotify
143
142
  frameborder: 0,
144
143
  allowtransparency: true,
145
144
  view: nil,
146
- theme: nil,
145
+ theme: nil
147
146
  }
148
147
  options = default_options.merge(options)
149
148
 
@@ -9,7 +9,7 @@ module RSpotify
9
9
  API_URI = 'https://api.spotify.com/v1/'.freeze
10
10
  AUTHORIZE_URI = 'https://accounts.spotify.com/authorize'.freeze
11
11
  TOKEN_URI = 'https://accounts.spotify.com/api/token'.freeze
12
- VERBS = %w(get post put delete)
12
+ VERBS = %w[get post put delete].freeze
13
13
 
14
14
  class << self
15
15
  attr_accessor :raw_response
@@ -4,18 +4,21 @@ module RSpotify
4
4
  def initialize(user, options = {})
5
5
  @user = user
6
6
 
7
- @repeat_state = options['repeat_state']
8
- @shuffle_state = options['shuffle_state']
9
- @progress = options['progress_ms']
10
- @is_playing = options['is_playing']
7
+ @repeat_state = options['repeat_state']
8
+ @shuffle_state = options['shuffle_state']
9
+ @progress = options['progress_ms']
10
+ @is_playing = options['is_playing']
11
+ @currently_playing_type = options['currently_playing_type']
12
+ @context_type = options.dig('context', 'type')
13
+ @context_uri = options.dig('context', 'uri')
11
14
 
12
15
  @track = if options['track']
13
- Track.new options['track']
14
- end
16
+ Track.new options['track']
17
+ end
15
18
 
16
19
  @device = if options['device']
17
- Device.new options['device']
18
- end
20
+ Device.new options['device']
21
+ end
19
22
  end
20
23
 
21
24
  def playing?
@@ -28,7 +31,7 @@ module RSpotify
28
31
  # @example
29
32
  # player = user.player
30
33
  # player.play_context(nil,"spotify:album:1Je1IMUlBXcx1Fz0WE7oPT")
31
- def play_context(device_id=nil, uri)
34
+ def play_context(device_id = nil, uri)
32
35
  params = {"context_uri": uri}
33
36
  play(device_id, params)
34
37
  end
@@ -40,7 +43,7 @@ module RSpotify
40
43
  # player = user.player
41
44
  # tracks_uris = ["spotify:track:4iV5W9uYEdYUVa79Axb7Rh", "spotify:track:1301WleyT98MSxVHPZCA6M"]
42
45
  # player.play_tracks(nil, tracks_uris)
43
- def play_tracks(device_id=nil, uris)
46
+ def play_tracks(device_id = nil, uris)
44
47
  params = {"uris": uris}
45
48
  play(device_id, params)
46
49
  end
@@ -52,7 +55,7 @@ module RSpotify
52
55
  # player = user.player
53
56
  # player.play_track(nil, "spotify:track:4iV5W9uYEdYUVa79Axb7Rh")
54
57
  # # User must be a premium subscriber for this feature to work.
55
- def play_track(device_id=nil, uri)
58
+ def play_track(device_id = nil, uri)
56
59
  params = {"uris": [uri]}
57
60
  play(device_id, params)
58
61
  end
@@ -65,7 +68,7 @@ module RSpotify
65
68
  # player.play
66
69
  def play(device_id = nil, params = {})
67
70
  url = "me/player/play"
68
- url = device_id.nil? ? url : url+"?device_id=#{device_id}"
71
+ url = device_id.nil? ? url : "#{url}?device_id=#{device_id}"
69
72
 
70
73
  User.oauth_put(@user.id, url, params.to_json)
71
74
  end
@@ -303,7 +303,7 @@ module RSpotify
303
303
  # positions = [0,3,8]
304
304
  # playlist.remove_tracks!(positions, snapshot_id: '0ZvtH...')
305
305
  def remove_tracks!(tracks, snapshot_id: nil)
306
- positions = tracks if tracks.first.is_a? Fixnum
306
+ positions = tracks if tracks.first.is_a? Integer
307
307
 
308
308
  tracks = tracks.map do |track|
309
309
  next { uri: track.uri } if track.is_a? Track
@@ -104,6 +104,8 @@ module RSpotify
104
104
  # Creates a playlist in user's Spotify account. This method is only available when the current
105
105
  # user has granted access to the *playlist-modify-public* and *playlist-modify-private* scopes.
106
106
  #
107
+ # @note To create a collaborative playlist the public option must be set to false.
108
+ #
107
109
  # @param name [String] The name for the new playlist
108
110
  # @param public [Boolean] Whether the playlist is public or private. Default: true
109
111
  # @return [Playlist]
@@ -116,10 +118,14 @@ module RSpotify
116
118
  # playlist = user.create_playlist!('my-second-playlist', public: false)
117
119
  # playlist.name #=> "my-second-playlist"
118
120
  # playlist.public #=> false
119
- def create_playlist!(name, public: true)
121
+ def create_playlist!(name, description: nil, public: true, collaborative: false)
120
122
  url = "users/#{@id}/playlists"
121
- request_data = { name: name, public: public }.to_json
122
-
123
+ request_data = {
124
+ name: name,
125
+ public: public,
126
+ description: description,
127
+ collaborative: collaborative
128
+ }.to_json
123
129
  response = User.oauth_post(@id, url, request_data)
124
130
  return response if RSpotify.raw_response
125
131
  Playlist.new response
@@ -133,20 +139,27 @@ module RSpotify
133
139
  url = "me/player"
134
140
  response = User.oauth_get(@id, url)
135
141
  return response if RSpotify.raw_response
136
- response.present? ? Player.new(self, response) : nil
142
+ response ? Player.new(self, response) : Player.new(self)
137
143
  end
138
144
 
139
145
  # Get the current user’s recently played tracks. Requires the *user-read-recently-played* scope.
140
146
  #
141
147
  # @param limit [Integer] Optional. The number of entities to return. Default: 20. Minimum: 1. Maximum: 50.
148
+ # @param after [String] Optional. A Unix timestamp in milliseconds. Returns all items after (but not including) this cursor position. If after is specified, before must not be specified.
149
+ # @param before [String] Optional. A Unix timestamp in milliseconds. Returns all items before (but not including) this cursor position. If before is specified, after must not be specified.
142
150
  # @return [Array<Track>]
143
151
  #
144
152
  # @example
145
153
  # recently_played = user.recently_played
146
154
  # recently_played.size #=> 20
147
155
  # recently_played.first.name #=> "Ice to Never"
148
- def recently_played(limit: 20)
156
+ # user.recently_played(limit: 50)
157
+ # user.recently_played(after: '1572561234', before: '1572562369')
158
+ def recently_played(limit: 20, after: nil, before: nil)
149
159
  url = "me/player/recently-played?limit=#{limit}"
160
+ url << "&after=#{after}" if after
161
+ url << "&before=#{before}" if before
162
+
150
163
  response = RSpotify.resolve_auth_request(@id, url)
151
164
  return response if RSpotify.raw_response
152
165
 
@@ -300,14 +313,16 @@ module RSpotify
300
313
  #
301
314
  # @param limit [Integer] Maximum number of tracks to return. Maximum: 50. Minimum: 1. Default: 20.
302
315
  # @param offset [Integer] The index of the first track to return. Use with limit to get the next set of tracks. Default: 0.
316
+ # @param market [String] Optional. An {http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2 country code}.
303
317
  # @return [Array<Track>]
304
318
  #
305
319
  # @example
306
320
  # tracks = user.saved_tracks
307
321
  # tracks.size #=> 20
308
322
  # tracks.first.name #=> "Do I Wanna Know?"
309
- def saved_tracks(limit: 20, offset: 0)
323
+ def saved_tracks(limit: 20, offset: 0, market: nil)
310
324
  url = "me/tracks?limit=#{limit}&offset=#{offset}"
325
+ url << "&market=#{market}" if market
311
326
  response = User.oauth_get(@id, url)
312
327
  json = RSpotify.raw_response ? JSON.parse(response) : response
313
328
 
@@ -375,14 +390,16 @@ module RSpotify
375
390
  #
376
391
  # @param limit [Integer] Maximum number of albums to return. Maximum: 50. Minimum: 1. Default: 20.
377
392
  # @param offset [Integer] The index of the first album to return. Use with limit to get the next set of albums. Default: 0.
393
+ # @param market [String] Optional. An {http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO 3166-1 alpha-2 country code}.
378
394
  # @return [Array<Album>]
379
395
  #
380
396
  # @example
381
397
  # albums = user.saved_albums
382
398
  # albums.size #=> 20
383
399
  # albums.first.name #=> "Launeddas"
384
- def saved_albums(limit: 20, offset: 0)
400
+ def saved_albums(limit: 20, offset: 0, market: nil)
385
401
  url = "me/albums?limit=#{limit}&offset=#{offset}"
402
+ url << "&market=#{market}" if market
386
403
  response = User.oauth_get(@id, url)
387
404
  json = RSpotify.raw_response ? JSON.parse(response) : response
388
405
 
@@ -1,3 +1,3 @@
1
1
  module RSpotify
2
- VERSION = '2.6.0'
2
+ VERSION = '2.9.1'.freeze
3
3
  end
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: 2.6.0
4
+ version: 2.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilherme Sad
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-11 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth-oauth2
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.0'
139
- description:
139
+ description:
140
140
  email:
141
141
  - gorgulhoguilherme@gmail.com
142
142
  executables: []
@@ -144,6 +144,7 @@ extensions: []
144
144
  extra_rdoc_files: []
145
145
  files:
146
146
  - ".editorconfig"
147
+ - ".github/FUNDING.yml"
147
148
  - ".gitignore"
148
149
  - ".rspec"
149
150
  - ".travis.yml"
@@ -260,7 +261,7 @@ homepage: http://rubygems.org/gems/rspotify
260
261
  licenses:
261
262
  - MIT
262
263
  metadata: {}
263
- post_install_message:
264
+ post_install_message:
264
265
  rdoc_options: []
265
266
  require_paths:
266
267
  - lib
@@ -275,9 +276,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
276
  - !ruby/object:Gem::Version
276
277
  version: '0'
277
278
  requirements: []
278
- rubyforge_project:
279
- rubygems_version: 2.6.8
280
- signing_key:
279
+ rubygems_version: 3.0.6
280
+ signing_key:
281
281
  specification_version: 4
282
282
  summary: A ruby wrapper for the Spotify Web API
283
283
  test_files:
@@ -368,4 +368,3 @@ test_files:
368
368
  - spec/vcr_cassettes/user_find_spotify.yml
369
369
  - spec/vcr_cassettes/user_find_wizzler.yml
370
370
  - spec/vcr_cassettes/user_wizzler_playlists_limit_20_offset_0.yml
371
- has_rdoc: