jarvisbot_songfinder 1.0.2 → 1.0.3

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -1
  3. data/Gemfile +3 -1
  4. data/Gemfile.lock +4 -4
  5. data/Rakefile +3 -1
  6. data/bin/console +5 -1
  7. data/fixtures/vcr_cassettes/query_text.yml +120 -16
  8. data/fixtures/vcr_cassettes/query_track_delegation.yml +122 -18
  9. data/fixtures/vcr_cassettes/query_youtube_url.yml +8 -8
  10. data/fixtures/vcr_cassettes/search_query_auxiliary_provider.yml +43 -43
  11. data/fixtures/vcr_cassettes/search_query_not_found.yml +9 -9
  12. data/fixtures/vcr_cassettes/search_query_preferred_and_auxiliary.yml +122 -18
  13. data/fixtures/vcr_cassettes/search_query_preferred_provider.yml +122 -18
  14. data/fixtures/vcr_cassettes/spotify_invalid_region_restricted.yml +57 -5
  15. data/fixtures/vcr_cassettes/spotify_invalid_search.yml +5 -5
  16. data/fixtures/vcr_cassettes/spotify_invalid_too_long.yml +57 -5
  17. data/fixtures/vcr_cassettes/spotify_invalid_url_relinked.yml +107 -0
  18. data/fixtures/vcr_cassettes/spotify_valid.yml +56 -4
  19. data/fixtures/vcr_cassettes/spotify_valid_clean_or_unknown.yml +56 -4
  20. data/fixtures/vcr_cassettes/spotify_valid_explicit.yml +57 -5
  21. data/fixtures/vcr_cassettes/spotify_valid_search.yml +61 -9
  22. data/fixtures/vcr_cassettes/url_query_known_provider.yml +14 -14
  23. data/fixtures/vcr_cassettes/youtube_invalid.yml +4 -4
  24. data/fixtures/vcr_cassettes/youtube_invalid_region_restricted.yml +8 -8
  25. data/fixtures/vcr_cassettes/youtube_invalid_search.yml +4 -4
  26. data/fixtures/vcr_cassettes/youtube_invalid_too_long.yml +8 -8
  27. data/fixtures/vcr_cassettes/youtube_invalid_wrong_category.yml +15 -15
  28. data/fixtures/vcr_cassettes/youtube_valid.yml +214 -214
  29. data/fixtures/vcr_cassettes/youtube_valid_search.yml +22 -22
  30. data/jarvisbot_songfinder.gemspec +5 -4
  31. data/lib/jarvisbot_songfinder/configuration.rb +6 -1
  32. data/lib/jarvisbot_songfinder/helpers/query.rb +21 -14
  33. data/lib/jarvisbot_songfinder/helpers/reply_message.rb +31 -24
  34. data/lib/jarvisbot_songfinder/helpers/search_query.rb +7 -2
  35. data/lib/jarvisbot_songfinder/helpers/url_query.rb +10 -6
  36. data/lib/jarvisbot_songfinder/providers/bandrequest.rb +5 -1
  37. data/lib/jarvisbot_songfinder/providers/provider.rb +7 -3
  38. data/lib/jarvisbot_songfinder/providers/spotify_api.rb +25 -25
  39. data/lib/jarvisbot_songfinder/providers/unknown_provider.rb +4 -0
  40. data/lib/jarvisbot_songfinder/providers/unknown_search_provider.rb +5 -1
  41. data/lib/jarvisbot_songfinder/providers/youtube_api.rb +35 -35
  42. data/lib/jarvisbot_songfinder/version.rb +3 -1
  43. data/lib/jarvisbot_songfinder.rb +3 -0
  44. metadata +24 -27
  45. data/fixtures/vcr_cassettes/spotify_vcr_test.yml +0 -55
  46. data/fixtures/vcr_cassettes/youtube_invalid_regionrestricted.yml +0 -147
  47. data/fixtures/vcr_cassettes/youtube_invalid_wrongcategory.yml +0 -254
@@ -1,30 +1,34 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
4
+ # contains all the messages gem might use in a single place
2
5
  module ReplyMessage
6
+ # :nodoc:
3
7
  module Request
4
8
  def self.usage
5
9
  "Usage: '!sr $url'"
6
10
  end
7
-
11
+
8
12
  def self.queue_closed
9
13
  "Song queue is closed. Please wait until Dan opens it."
10
14
  end
11
-
15
+
12
16
  def self.submitted_successfully(request)
13
17
  "Your request: #{request} successfully submitted"
14
18
  end
15
-
19
+
16
20
  def self.already_requested(request)
17
21
  "#{request} already exists in the queue"
18
22
  end
19
-
23
+
20
24
  def self.user_already_requested(request)
21
25
  "You already have #{request} in the queue, use '!replace url/search term' to replace"
22
26
  end
23
-
27
+
24
28
  def self.invalid_url(request)
25
29
  "#{request} is invalid"
26
30
  end
27
-
31
+
28
32
  def self.too_long
29
33
  "Your request is too long, please stick to videos not longer than 10 minutes"
30
34
  end
@@ -32,74 +36,77 @@ module JarvisbotSongfinder
32
36
  def self.too_short
33
37
  "Your request is too short, troll requests or gnoming will not fly here"
34
38
  end
35
-
39
+
36
40
  def self.invalid_category
37
41
  "Your request is not in Music category"
38
42
  end
39
-
43
+
40
44
  def self.replaced_successfully(request)
41
45
  "Your previous request was replaced with #{request}"
42
46
  end
43
-
47
+
44
48
  def self.nothing_to_replace
45
49
  "Nothing to replace. Use '!sr url/search term' to request something"
46
50
  end
47
-
51
+
48
52
  def self.nothing_to_remove
49
53
  "Nothing to remove. Use '!sr url/search term' to request something"
50
54
  end
51
-
55
+
52
56
  def self.removed_successfully
53
57
  "Your request removed from the queue successfully"
54
58
  end
55
-
59
+
56
60
  def self.region_restricted
57
61
  "This video is not availible in the US"
58
62
  end
59
-
63
+
60
64
  def self.invalid_video_id
61
65
  "Invalid video ID"
62
66
  end
63
-
67
+
64
68
  def self.promoted_successfully(request)
65
69
  "Request: #{request} was promoted successfully"
66
70
  end
67
-
71
+
68
72
  def self.promoted_unsuccessfully
69
73
  "Cannot promote"
70
74
  end
71
-
75
+
72
76
  def self.demoted_successfully(request)
73
77
  "Request: #{request} was demoted successfully"
74
78
  end
75
-
79
+
76
80
  def self.demoted_unsuccessfully
77
81
  "Cannot demote"
78
82
  end
79
-
83
+
80
84
  def self.unknown_provider
81
- "Unknown provider. Available providers: #{JarvisbotSongfinder::Provider.available_providers}"
85
+ "Unknown provider. Available providers: " +
86
+ JarvisbotSongfinder::Provider.available_providers.to_s
82
87
  end
83
-
88
+
84
89
  def self.song_banned
85
90
  "Song was banned by Dan, request something else"
86
91
  end
87
92
  end
88
-
93
+
94
+ # :nodoc:
89
95
  module Song
90
96
  def self.currently_playing(song)
91
97
  "#{song} is currently playing"
92
98
  end
93
-
99
+
94
100
  def self.not_playing
95
101
  "Nothing is currently playing"
96
102
  end
97
103
  end
98
-
104
+
105
+ # :nodoc:
99
106
  module Search
100
107
  def self.not_found
101
108
  "Nothing is found, check your spelling"
102
109
  end
103
110
  end
104
111
  end
105
- end
112
+ end
@@ -1,5 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
2
- class SearchQuery
4
+ # Reponsible for handling search (words) based requests
5
+ # JarvisbotSongfinder::SearchQuery.new("Paramore Misery").track.length
6
+ # # => 211
7
+ class SearchQuery
3
8
  def initialize(query)
4
9
  @query = query
5
10
  @provider = select_provider
@@ -18,4 +23,4 @@ module JarvisbotSongfinder
18
23
  provider.nil? ? UnknownSearchProvider.new : provider.from_search(@query)
19
24
  end
20
25
  end
21
- end
26
+ end
@@ -1,22 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
4
+ # Responsible for handling URL based requests
5
+ # UrlQuery.new("https://www.youtube.com/watch?v=QSBco8kVuZM").track.length
6
+ # # => 172
2
7
  class UrlQuery
3
8
  def initialize(url)
4
9
  @url = url
5
10
  @provider = select_provider
6
11
  end
7
-
12
+
8
13
  def track
9
14
  @provider
10
15
  end
11
-
16
+
12
17
  private
13
-
18
+
14
19
  def select_provider
15
- # TODO: redo with .find instead of .select
16
- provider = Provider.available_providers.find do |p|
20
+ provider = Provider.available_providers.find do |p|
17
21
  p::URL_REGEX.match @url
18
22
  end
19
23
  provider.nil? ? UnknownProvider.new : provider.new(@url)
20
24
  end
21
25
  end
22
- end
26
+ end
@@ -1,4 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
4
+ # Pseudo-provider for internal use, pretty much a remnant of the past
5
+ # i'm too lazy to extract into my rails app
2
6
  class Bandrequest < Provider
3
7
  def initialize(band)
4
8
  super()
@@ -33,4 +37,4 @@ module JarvisbotSongfinder
33
37
  true
34
38
  end
35
39
  end
36
- end
40
+ end
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
4
+ # Abstract class for concrete providers to inherit from (Template Method Pattern)
2
5
  class Provider
3
6
  @available_providers ||= []
4
7
  class << self
@@ -27,7 +30,8 @@ module JarvisbotSongfinder
27
30
  end
28
31
 
29
32
  def valid?
30
- return false if @errors.any?
33
+ return false if @errors.any?
34
+
31
35
  available_in_region? && length_valid? && in_music_category?
32
36
  end
33
37
 
@@ -38,7 +42,7 @@ module JarvisbotSongfinder
38
42
  def explicit?
39
43
  raise NotImplementedError
40
44
  end
41
-
45
+
42
46
  private
43
47
 
44
48
  def add_error(error)
@@ -75,4 +79,4 @@ module JarvisbotSongfinder
75
79
  raise NotImplementedError
76
80
  end
77
81
  end
78
- end
82
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
2
4
  class SpotifyAPI < Provider
3
5
  Provider.available_providers << self
4
- ID_REGEX = /\Ahttps?:\/\/(?:embed\.|open\.)(?:spotify\.com\/)(?:track\/|\?uri=spotify:track:)((\w|-){22})/
5
- URL_REGEX = /spotify\.com/
6
+ ID_REGEX = %r{\Ahttps?:\/\/(?:embed\.|open\.)(?:spotify\.com\/)(?:track\/|\?uri=spotify:track:)((\w|-){22})}.freeze
7
+ URL_REGEX = %r{spotify\.com/}.freeze
6
8
 
7
9
  def initialize(url)
8
10
  super()
@@ -12,23 +14,23 @@ module JarvisbotSongfinder
12
14
  end
13
15
 
14
16
  def self.from_search(query)
15
- results = RSpotify::Track.search(query)
17
+ results = RSpotify::Track.search(query, market: JarvisbotSongfinder.configuration.region)
16
18
  if results.any?
17
19
  link = "https://open.spotify.com/track/#{results.first.id}"
18
- return self.new(link)
20
+ return new(link)
19
21
  else
20
22
  return nil
21
23
  end
22
24
  end
23
-
25
+
24
26
  def length
25
27
  @track.duration_ms / 1000
26
28
  end
27
-
29
+
28
30
  def title
29
31
  @track.name
30
32
  end
31
-
33
+
32
34
  def artist
33
35
  @track.artists.first.name
34
36
  end
@@ -44,44 +46,42 @@ module JarvisbotSongfinder
44
46
  def explicit?
45
47
  @track.explicit
46
48
  end
47
-
48
- private
49
+
50
+ private
49
51
 
50
52
  # :nocov:
51
53
  def get_track_id(url)
52
54
  if !ID_REGEX.match(url)
53
55
  add_error ReplyMessage::Request.invalid_video_id
54
- return nil
56
+ nil
55
57
  else
56
58
  ID_REGEX.match(url)[1]
57
59
  end
58
60
  end
59
-
61
+
60
62
  def check_id_validity
61
- begin
62
- @track = RSpotify::Track.find(@track_id)
63
- rescue RestClient::BadRequest => e
64
- add_error ReplyMessage::Request.invalid_video_id
65
- end
63
+ @track = RSpotify::Track.find(@track_id, market: JarvisbotSongfinder.configuration.region)
64
+ rescue RestClient::BadRequest
65
+ add_error ReplyMessage::Request.invalid_video_id
66
66
  end
67
67
  # :nocov:
68
-
69
- def in_music_category?
68
+
69
+ def in_music_category?
70
70
  true
71
71
  end
72
-
72
+
73
73
  def not_too_long?
74
74
  if length < 600
75
- return true
75
+ true
76
76
  else
77
77
  add_error ReplyMessage::Request.too_long
78
- return false
78
+ false
79
79
  end
80
80
  end
81
-
81
+
82
82
  def available_in_region?
83
83
  return true if @track.available_markets.empty?
84
-
84
+
85
85
  if @track.available_markets.include? JarvisbotSongfinder.configuration.region
86
86
  return true
87
87
  else
@@ -89,5 +89,5 @@ module JarvisbotSongfinder
89
89
  return false
90
90
  end
91
91
  end
92
- end
93
- end
92
+ end
93
+ end
@@ -1,4 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
4
+ # NullObject for handling cases where none of the providers matched request
5
+ # with their URL_REGEX
2
6
  class UnknownProvider
3
7
  attr_reader :errors
4
8
 
@@ -1,4 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
4
+ # NullObject for handling cases where searching any other provider did not
5
+ # found anything
2
6
  class UnknownSearchProvider
3
7
  attr_reader :errors
4
8
 
@@ -10,4 +14,4 @@ module JarvisbotSongfinder
10
14
  false
11
15
  end
12
16
  end
13
- end
17
+ end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
2
4
  class YoutubeAPI < Provider
3
5
  Provider.available_providers << self
4
- ID_REGEX = /\A((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu\.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?/
5
- URL_REGEX = /youtube\.com|youtu\.be/
6
-
6
+ ID_REGEX = /\A((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu\.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?/.freeze
7
+ URL_REGEX = /youtube\.com|youtu\.be/.freeze
8
+
7
9
  def initialize(url)
8
10
  super()
9
11
  @track_id = get_track_id(url)
@@ -14,19 +16,19 @@ module JarvisbotSongfinder
14
16
 
15
17
  def self.from_search(query)
16
18
  videos = Yt::Collections::Videos.new
17
- params = {q: query, order: "relevance", video_category_id: 10}
19
+ params = { q: query, order: "relevance", video_category_id: 10 }
18
20
  if track_id = videos.where(params)&.first&.id
19
21
  link = "https://www.youtube.com/watch?v=#{track_id}"
20
- return self.new(link)
22
+ return new(link)
21
23
  else
22
24
  return nil
23
25
  end
24
26
  end
25
-
27
+
26
28
  def title
27
29
  @track.title
28
30
  end
29
-
31
+
30
32
  def length
31
33
  @track.duration
32
34
  end
@@ -47,91 +49,89 @@ module JarvisbotSongfinder
47
49
  # no way to know
48
50
  false
49
51
  end
50
-
52
+
51
53
  private
52
54
 
53
55
  # :nocov:
54
56
  def get_track_id(url)
55
57
  if !ID_REGEX.match(url)
56
58
  add_error ReplyMessage::Request.invalid_video_id
57
- return nil
59
+ nil
58
60
  else
59
61
  ID_REGEX.match(url)[5]
60
62
  end
61
63
  end
62
-
64
+
63
65
  def check_id_validity
64
- begin
65
- @track.empty?
66
- rescue Yt::Errors::NoItems => e
67
- add_error ReplyMessage::Request.invalid_video_id
68
- end
66
+ @track.empty?
67
+ rescue Yt::Errors::NoItems => e
68
+ add_error ReplyMessage::Request.invalid_video_id
69
69
  end
70
-
70
+
71
71
  def not_too_long?
72
72
  if @track.duration < 600
73
- return true
73
+ true
74
74
  else
75
75
  add_error ReplyMessage::Request.too_long
76
- return false
76
+ false
77
77
  end
78
78
  end
79
-
79
+
80
80
  def in_music_category?
81
81
  if @track.category_id == "10"
82
- return true
83
- else
82
+ true
83
+ else
84
84
  add_error ReplyMessage::Request.invalid_category
85
- return false
85
+ false
86
86
  end
87
87
  end
88
-
88
+
89
89
  def available_in_region?
90
90
  # TODO: refactor this into proper methods, this can be a guard clause
91
91
  if listed?
92
92
  if allowed_list_exists?
93
93
  if in_allowed_list?
94
- return true
94
+ true
95
95
  else
96
96
  add_error ReplyMessage::Request.region_restricted
97
- return false
97
+ false
98
98
  end
99
99
  else
100
100
  if in_blocked_list?
101
101
  add_error ReplyMessage::Request.region_restricted
102
- return false
102
+ false
103
103
  else
104
- return true
104
+ true
105
105
  end
106
106
  end
107
107
  else
108
- return true
108
+ true
109
109
  end
110
110
  end
111
-
111
+
112
112
  def listed?
113
113
  !!@track.content_detail.data&.dig('regionRestriction')
114
114
  end
115
-
115
+
116
116
  def allowed_list_exists?
117
117
  !!@track.content_detail.data&.dig('regionRestriction', 'allowed')
118
118
  end
119
-
119
+
120
120
  def in_allowed_list?
121
121
  if allowed_list = @track.content_detail.data&.dig('regionRestriction', 'allowed')
122
122
  allowed_list.include?(JarvisbotSongfinder.configuration.region)
123
123
  else
124
- return false
124
+ false
125
125
  end
126
126
  end
127
-
127
+
128
128
  def in_blocked_list?
129
129
  if blocked_list = @track.content_detail.data&.dig('regionRestriction', 'blocked')
130
130
  blocked_list.include?(JarvisbotSongfinder.configuration.region)
131
131
  else
132
- return false
132
+ false
133
133
  end
134
134
  end
135
135
  end
136
136
  # :nocov:
137
- end
137
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module JarvisbotSongfinder
2
- VERSION = "1.0.2"
4
+ VERSION = "1.0.3"
3
5
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # :nodoc:
1
4
  module JarvisbotSongfinder
2
5
  require "jarvisbot_songfinder/version"
3
6
  require "jarvisbot_songfinder/configuration"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jarvisbot_songfinder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-06 00:00:00.000000000 Z
11
+ date: 2019-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +80,6 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0.16'
69
- - !ruby/object:Gem::Dependency
70
- name: pry
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: vcr
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -123,33 +123,33 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0.16'
125
125
  - !ruby/object:Gem::Dependency
126
- name: yt
126
+ name: rspotify
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.29.1
131
+ version: 2.4.0
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.29.1
138
+ version: 2.4.0
139
139
  - !ruby/object:Gem::Dependency
140
- name: rspotify
140
+ name: yt
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: 2.4.0
145
+ version: 0.29.1
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: 2.4.0
152
+ version: 0.29.1
153
153
  description: Gem jarvissongbot uses to take user input and transform it into queryable
154
154
  music track found on enabled providers (youtube, spotify), validating it afterwards
155
155
  email:
@@ -179,19 +179,17 @@ files:
179
179
  - fixtures/vcr_cassettes/spotify_invalid_region_restricted.yml
180
180
  - fixtures/vcr_cassettes/spotify_invalid_search.yml
181
181
  - fixtures/vcr_cassettes/spotify_invalid_too_long.yml
182
+ - fixtures/vcr_cassettes/spotify_invalid_url_relinked.yml
182
183
  - fixtures/vcr_cassettes/spotify_valid.yml
183
184
  - fixtures/vcr_cassettes/spotify_valid_clean_or_unknown.yml
184
185
  - fixtures/vcr_cassettes/spotify_valid_explicit.yml
185
186
  - fixtures/vcr_cassettes/spotify_valid_search.yml
186
- - fixtures/vcr_cassettes/spotify_vcr_test.yml
187
187
  - fixtures/vcr_cassettes/url_query_known_provider.yml
188
188
  - fixtures/vcr_cassettes/youtube_invalid.yml
189
189
  - fixtures/vcr_cassettes/youtube_invalid_region_restricted.yml
190
- - fixtures/vcr_cassettes/youtube_invalid_regionrestricted.yml
191
190
  - fixtures/vcr_cassettes/youtube_invalid_search.yml
192
191
  - fixtures/vcr_cassettes/youtube_invalid_too_long.yml
193
192
  - fixtures/vcr_cassettes/youtube_invalid_wrong_category.yml
194
- - fixtures/vcr_cassettes/youtube_invalid_wrongcategory.yml
195
193
  - fixtures/vcr_cassettes/youtube_valid.yml
196
194
  - fixtures/vcr_cassettes/youtube_valid_search.yml
197
195
  - jarvisbot_songfinder.gemspec
@@ -230,8 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
228
  - !ruby/object:Gem::Version
231
229
  version: '0'
232
230
  requirements: []
233
- rubyforge_project:
234
- rubygems_version: 2.7.3
231
+ rubygems_version: 3.0.2
235
232
  signing_key:
236
233
  specification_version: 4
237
234
  summary: Take user input and return music track