fronkin_bandcamp 0.3.0 → 0.4.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/Gemfile.lock +6 -6
- data/README.md +0 -6
- data/fronkin_bandcamp.gemspec +2 -2
- data/lib/fronkin_bandcamp/artist.rb +5 -3
- data/lib/fronkin_bandcamp/release.rb +21 -2
- data/lib/fronkin_bandcamp/scraper.rb +7 -7
- data/lib/fronkin_bandcamp/version.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5aa721c0d234ac5d272756b4bae205934d15448cfb189a7a210f734660e0bec2
|
4
|
+
data.tar.gz: fa27e53eb91f0e5f50916209e127886e48a16782f8c430c3f7db32a9b986ee14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ebd56d2dd9ba20a85e76db33396b26563438db8ffcc5930b28ac3d533642f933792b371c7b5694bf701e4549a5e2332d02271a55c8b7969f8e41cf2dcbb4632
|
7
|
+
data.tar.gz: e3cb91ed0cb4f1edc4e2c11f3667898ba0cdaae78d9d514ccea0e2efc7e3c91bc4a336af500368942ff83c1b0c5381e1791a60acfec2ca768f7c168f6485d5be
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
fronkin_bandcamp (0.
|
4
|
+
fronkin_bandcamp (0.4.0)
|
5
5
|
nokogiri (>= 1.10.4)
|
6
6
|
|
7
7
|
GEM
|
@@ -13,7 +13,7 @@ GEM
|
|
13
13
|
diff-lcs (1.3)
|
14
14
|
method_source (0.9.0)
|
15
15
|
mini_portile2 (2.4.0)
|
16
|
-
nokogiri (1.10.
|
16
|
+
nokogiri (1.10.9)
|
17
17
|
mini_portile2 (~> 2.4.0)
|
18
18
|
pry (0.11.3)
|
19
19
|
coderay (~> 1.1.0)
|
@@ -21,7 +21,7 @@ GEM
|
|
21
21
|
pry-byebug (3.6.0)
|
22
22
|
byebug (~> 10.0)
|
23
23
|
pry (~> 0.10)
|
24
|
-
rake (
|
24
|
+
rake (13.0.1)
|
25
25
|
rspec (3.7.0)
|
26
26
|
rspec-core (~> 3.7.0)
|
27
27
|
rspec-expectations (~> 3.7.0)
|
@@ -41,12 +41,12 @@ PLATFORMS
|
|
41
41
|
|
42
42
|
DEPENDENCIES
|
43
43
|
awesome_print (~> 1.8)
|
44
|
-
bundler
|
44
|
+
bundler
|
45
45
|
fronkin_bandcamp!
|
46
46
|
pry (~> 0.11)
|
47
47
|
pry-byebug (~> 3.6)
|
48
|
-
rake (~>
|
48
|
+
rake (~> 13.0)
|
49
49
|
rspec (~> 3.7)
|
50
50
|
|
51
51
|
BUNDLED WITH
|
52
|
-
1.
|
52
|
+
2.1.4
|
data/README.md
CHANGED
@@ -96,12 +96,6 @@ scraper.release.formats
|
|
96
96
|
|
97
97
|
## III. Miscellaneous
|
98
98
|
|
99
|
-
### TODO
|
100
|
-
|
101
|
-
* ~~Scrape release formats~~
|
102
|
-
* Scrape release fans
|
103
|
-
* Add CLI
|
104
|
-
|
105
99
|
### Development
|
106
100
|
|
107
101
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/fronkin_bandcamp.gemspec
CHANGED
@@ -23,8 +23,8 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_dependency 'nokogiri', '>= 1.10.4'
|
25
25
|
|
26
|
-
spec.add_development_dependency 'bundler'
|
27
|
-
spec.add_development_dependency 'rake', '~>
|
26
|
+
spec.add_development_dependency 'bundler'
|
27
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
28
28
|
spec.add_development_dependency 'rspec', '~> 3.7'
|
29
29
|
spec.add_development_dependency 'pry', '~> 0.11'
|
30
30
|
spec.add_development_dependency 'pry-byebug', '~> 3.6'
|
@@ -1,9 +1,11 @@
|
|
1
1
|
module FronkinBandcamp
|
2
2
|
class Artist
|
3
|
-
|
3
|
+
attr_reader :name, :photo, :location
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
|
5
|
+
def initialize(doc)
|
6
|
+
@name = doc.css('div#bio-container span.title').text
|
7
|
+
@photo = doc.css('div#bio-container div.bio-pic a.popupImage').attribute('href').value
|
8
|
+
@location = doc.css('div#bio-container span.location').text
|
7
9
|
end
|
8
10
|
end
|
9
11
|
end
|
@@ -3,15 +3,24 @@ require 'fronkin_bandcamp/format'
|
|
3
3
|
|
4
4
|
module FronkinBandcamp
|
5
5
|
class Release
|
6
|
-
|
6
|
+
attr_accessor :bandcamp_url, :artist_name
|
7
|
+
attr_reader :title, :date, :description, :credits, :cover, :tracks, :tags,
|
8
|
+
:release_id, :formats, :bandcamp_album_id
|
9
|
+
|
10
|
+
BARE_CREDITS_NODE_SIZE = 2
|
7
11
|
|
8
12
|
def initialize(doc)
|
9
13
|
@title = doc.css('div#name-section h2.trackTitle').text.strip
|
10
|
-
@date = doc.css('div.tralbumData.tralbum-credits meta').attribute('content').value
|
14
|
+
@date = Date.parse(doc.css('div.tralbumData.tralbum-credits meta').attribute('content').value).strftime('%-m/%-d/%Y')
|
15
|
+
@description = doc.css('div.tralbumData.tralbum-about').text.strip.gsub(/\r/, "\n")
|
16
|
+
@credits = scrape_credits(doc)
|
11
17
|
@cover = doc.css('div#tralbumArt a.popupImage').attribute('href').value
|
12
18
|
@tracks = scrape_tracks(doc)
|
13
19
|
@tags = doc.css('div.tralbumData.tralbum-tags a.tag').map(&:text)
|
20
|
+
@release_id = tags.find { |tag| tag.match(/\Annr/) }&.upcase
|
14
21
|
@formats = scrape_formats(doc)
|
22
|
+
@bandcamp_album_id = doc.css('meta[property="og:video"]').attr("content").value.match(/album=(?<bandcamp_album_id>\d+)/).named_captures['bandcamp_album_id']
|
23
|
+
yield self if block_given?
|
15
24
|
end
|
16
25
|
|
17
26
|
private
|
@@ -26,5 +35,15 @@ module FronkinBandcamp
|
|
26
35
|
format_choices = doc.css('li.buyItem')
|
27
36
|
format_choices.map { |choice| Format.new(choice) }
|
28
37
|
end
|
38
|
+
|
39
|
+
def scrape_credits(doc)
|
40
|
+
child_nodes = doc.css('div.tralbumData.tralbum-credits').children
|
41
|
+
|
42
|
+
if child_nodes.size <= BARE_CREDITS_NODE_SIZE
|
43
|
+
''
|
44
|
+
else
|
45
|
+
child_nodes[4..-1].text.strip.gsub(/-\W/, '').split(/\r\n/)
|
46
|
+
end
|
47
|
+
end
|
29
48
|
end
|
30
49
|
end
|
@@ -5,21 +5,21 @@ require 'fronkin_bandcamp/artist'
|
|
5
5
|
|
6
6
|
module FronkinBandcamp
|
7
7
|
class Scraper
|
8
|
-
attr_reader :doc, :release, :artist
|
8
|
+
attr_reader :doc, :release, :artist, :url
|
9
9
|
|
10
10
|
def initialize(url)
|
11
|
-
@
|
11
|
+
@url = url
|
12
|
+
@doc = Nokogiri::HTML(URI.open(url), nil, 'utf-8') { |config| config.noblanks }
|
12
13
|
scrape
|
13
14
|
end
|
14
15
|
|
15
16
|
private
|
16
17
|
|
17
18
|
def scrape
|
18
|
-
@
|
19
|
-
@
|
20
|
-
|
21
|
-
|
22
|
-
artist.location = doc.css('div#bio-container span.location').text
|
19
|
+
@artist = Artist.new(doc)
|
20
|
+
@release = Release.new(doc) do |release|
|
21
|
+
release.artist_name = artist.name
|
22
|
+
release.bandcamp_url = url
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fronkin_bandcamp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fronk Lom Lom
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -28,30 +28,30 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '13.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '13.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,8 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
155
|
- !ruby/object:Gem::Version
|
156
156
|
version: '0'
|
157
157
|
requirements: []
|
158
|
-
|
159
|
-
rubygems_version: 2.7.6
|
158
|
+
rubygems_version: 3.1.2
|
160
159
|
signing_key:
|
161
160
|
specification_version: 4
|
162
161
|
summary: This gem is a convenient web scraper for Bandcamp releases.
|