notu 2.0.1 → 2.0.6

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
2
  SHA256:
3
- metadata.gz: dc22eeaa415531e9c62736407db873730543c3c5ae1e477e89fe8ec7b6338962
4
- data.tar.gz: 3de9f69c69ca0e5d1e86a765bd08051108b8fece5e9324f4409e91c2f97e2021
3
+ metadata.gz: 17025b3f45128e34a4b3783aaed736bd82db492214095ef237a2df2a7b5d91b4
4
+ data.tar.gz: fd8df3818f39aa8e9ef55fe574282101b180c978588139d68340bc9cf2b76ee7
5
5
  SHA512:
6
- metadata.gz: 4b7015dca25bdadc95ef6a1d3699a17f45b4ed0d3b8d4c54d0e9a953a41eec110ac3ce56060d278454d9f362a2ab1b97624ce3cd0eea71e42974352ea1d9fb63
7
- data.tar.gz: 40d978b957c0096a3f4e140be8aad6564616641296fdc5f8adde38f02fcf3fd3559129ebf540becd147ba970517191dc639f20195d041fa05341adff1d9243c8
6
+ metadata.gz: dd7ce60b42983046ce151511ef094697e329f14bea4000f60f3a54f73b257755102eb93ac7bbb3ae411d69bdbb7f5add631ea7b8e1dcc0cee98d94f3edad2018
7
+ data.tar.gz: 99e08c70c0dec86e1969ddc6e8a4d144894d0ebf1185e957f870ba2b3b2fdf9712605e787fe05c6021b86ee760037b750f22074a6538764e078e80d9028aa751
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.1
1
+ 2.0.6
data/lib/notu/library.rb CHANGED
@@ -7,6 +7,7 @@ module Notu
7
7
  attr_reader :username
8
8
 
9
9
  def initialize(options = {})
10
+ @semaphore = Mutex.new
10
11
  options = options.symbolize_keys
11
12
  self.username = options[:username]
12
13
  end
@@ -42,12 +43,14 @@ module Notu
42
43
  private
43
44
 
44
45
  def username=(value)
45
- @username = value.to_s.strip.downcase
46
- raise UnknownUsernameError.new(value) if username !~ /^[a-z0-9_]+$/
47
- begin
48
- HtmlDocument.get(url)
49
- rescue
50
- raise UnknownUsernameError.new(value)
46
+ @semaphore.synchronize do
47
+ @username = value.to_s.strip.downcase
48
+ raise UnknownUsernameError.new(value) if username !~ /^[a-z0-9_]+$/
49
+ begin
50
+ HtmlDocument.get(url)
51
+ rescue
52
+ raise UnknownUsernameError.new(value)
53
+ end
51
54
  end
52
55
  end
53
56
 
@@ -8,9 +8,9 @@ module Notu
8
8
  return unless block_given?
9
9
  page_urls.each do |url|
10
10
  document = HtmlDocument.get(url)
11
- (document/'#user-loved-tracks-section tbody tr').each do |element|
12
- artist = (element/'td.chartlist-name .chartlist-artists').first.try(:text) || next
13
- title = (element/'td.chartlist-name .link-block-target').first.try(:text) || next
11
+ (document/'table.chartlist tbody tr').each do |element|
12
+ artist = (element/'td.chartlist-artist a').first.try(:text) || next
13
+ title = (element/'td.chartlist-name a').first.try(:text) || next
14
14
  yield(Track.new(artist: artist, title: title))
15
15
  end
16
16
  end
@@ -25,9 +25,9 @@ module Notu
25
25
  page_urls.each do |url|
26
26
  document = HtmlDocument.get(url)
27
27
  (document/'table.chartlist tbody tr').each do |element|
28
- artist = (element/'td.chartlist-name .chartlist-artists').first.try(:text) || next
29
- title = (element/'td.chartlist-name .link-block-target').first.try(:text) || next
30
- plays_count = (element/'td.chartlist-countbar .countbar-bar-value').text.gsub(/[^\d]/, '').presence || next
28
+ artist = (element/'td.chartlist-artist a').first.try(:text) || next
29
+ title = (element/'td.chartlist-name a').first.try(:text) || next
30
+ plays_count = (element/'td.chartlist-bar .chartlist-count-bar-value').text.gsub(/[^\d]/, '').presence || next
31
31
  yield(Track.new(artist: artist, plays_count: plays_count, title: title))
32
32
  end
33
33
  end
@@ -9,8 +9,8 @@ module Notu
9
9
  page_urls.each do |url|
10
10
  document = HtmlDocument.get(url)
11
11
  (document/'table.chartlist tbody tr').each do |element|
12
- artist = (element/'td.chartlist-name .chartlist-artists').first.try(:text) || next
13
- title = (element/'td.chartlist-name .link-block-target').first.try(:text) || next
12
+ artist = (element/'td.chartlist-artist a').first.try(:text) || next
13
+ title = (element/'td.chartlist-name a').first.try(:text) || next
14
14
  yield(Track.new(artist: artist, title: title))
15
15
  end
16
16
  end
data/notu.gemspec CHANGED
@@ -15,12 +15,12 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.required_ruby_version = '>= 2.0.0'
17
17
 
18
- s.add_dependency 'activesupport', '>= 4.1.0', '< 6.0.0'
19
- s.add_dependency 'nokogiri', '>= 1.6.0', '< 1.9.0'
18
+ s.add_dependency 'activesupport', '>= 4.1.0', '< 7.0.0'
19
+ s.add_dependency 'nokogiri', '>= 1.6.0', '< 1.12.0'
20
20
 
21
- s.add_development_dependency 'byebug', '>= 3.2.0', '< 11.0.0'
22
- s.add_development_dependency 'rake', '>= 10.3.0', '< 13.0.0'
21
+ s.add_development_dependency 'byebug', '>= 3.2.0', '< 12.0.0'
22
+ s.add_development_dependency 'rake', '>= 10.3.0', '< 14.0.0'
23
23
  s.add_development_dependency 'rspec', '>= 3.1.0', '< 4.0.0'
24
- s.add_development_dependency 'vcr', '>= 4.0.0', '< 5.0.0'
24
+ s.add_development_dependency 'vcr', '>= 4.0.0', '< 7.0.0'
25
25
  s.add_development_dependency 'webmock', '>= 3.0.0', '< 4.0.0'
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notu
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Toulotte
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-11 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 4.1.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 6.0.0
22
+ version: 7.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 4.1.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 6.0.0
32
+ version: 7.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: nokogiri
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: 1.6.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.9.0
42
+ version: 1.12.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: 1.6.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: 1.9.0
52
+ version: 1.12.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: byebug
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 3.2.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 11.0.0
62
+ version: 12.0.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: 3.2.0
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 11.0.0
72
+ version: 12.0.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rake
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +79,7 @@ dependencies:
79
79
  version: 10.3.0
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: 13.0.0
82
+ version: 14.0.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: 10.3.0
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: 13.0.0
92
+ version: 14.0.0
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rspec
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -119,7 +119,7 @@ dependencies:
119
119
  version: 4.0.0
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
- version: 5.0.0
122
+ version: 7.0.0
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
@@ -129,7 +129,7 @@ dependencies:
129
129
  version: 4.0.0
130
130
  - - "<"
131
131
  - !ruby/object:Gem::Version
132
- version: 5.0.0
132
+ version: 7.0.0
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: webmock
135
135
  requirement: !ruby/object:Gem::Requirement
@@ -177,7 +177,7 @@ homepage: https://github.com/alexistoulotte/notu
177
177
  licenses:
178
178
  - MIT
179
179
  metadata: {}
180
- post_install_message:
180
+ post_install_message:
181
181
  rdoc_options: []
182
182
  require_paths:
183
183
  - lib
@@ -192,9 +192,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
192
  - !ruby/object:Gem::Version
193
193
  version: '0'
194
194
  requirements: []
195
- rubyforge_project:
196
- rubygems_version: 2.7.6
197
- signing_key:
195
+ rubygems_version: 3.2.15
196
+ signing_key:
198
197
  specification_version: 4
199
198
  summary: API for Last.fm
200
199
  test_files: []