beanbox 0.1.2 → 0.1.4
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/README.md +3 -1
- data/beanbox.gemspec +1 -1
- data/lib/beanbox/cli.rb +16 -2
- data/lib/beanbox/scraper.rb +37 -14
- data/lib/beanbox/version.rb +1 -1
- metadata +3 -4
- data/beanbox-0.1.1.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a59f7d11c09d08cc3533d468b2c607321662c39a
|
4
|
+
data.tar.gz: acad27f2246b16c3e35b3a38d8baba9b3552b79c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e127453df390549e67c6021d45824b4564dd443b478d117c6acf42dd4cd3675f7b11e79ac4605fba0a6df67f0f2bffd168218459734c5eeabfe4bcad99019648
|
7
|
+
data.tar.gz: a77d7fd01a99f8024e2cb98ea5ad3f10368ca07e488216bdad4eec05266a709453b028f1ab47230e9f319551b255f8ab89c33e87278a536439b8e3b2b089c02b
|
data/README.md
CHANGED
@@ -18,9 +18,11 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
$ gem install beanbox
|
20
20
|
|
21
|
+
This gem depends on Ruby version 2.3.3. You may need to install [rvm](https://rvm.io) if you have a different version of Ruby installed. Run `rvm install 2.3.3` and `rvm use 2.3.3`, then `bundle install` again.
|
22
|
+
|
21
23
|
## Usage
|
22
24
|
|
23
|
-
Simply run the command `beanbox` in your terminal to see a list of the top four best selling coffees on Beanbox.co as well as their price. Type in a coffee's list number and press enter to see more detailed information about that specific coffee.
|
25
|
+
Simply run the command `beanbox` in your terminal to see a list of the top four best selling coffees on Beanbox.co as well as their price. Type in a coffee's list number and press enter to see more detailed information about that specific coffee.
|
24
26
|
|
25
27
|
## Development
|
26
28
|
|
data/beanbox.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.bindir = "bin"
|
30
30
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
|
-
spec.required_ruby_version = '~> 2.3'
|
32
|
+
spec.required_ruby_version = '~> 2.3.3'
|
33
33
|
|
34
34
|
spec.add_development_dependency "bundler", "~> 1.16"
|
35
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/beanbox/cli.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
require 'pry'
|
2
2
|
class Beanbox::CLI
|
3
|
+
attr_accessor :scraper
|
3
4
|
|
4
5
|
def initialize
|
5
6
|
Beanbox::Coffee.reset!
|
6
7
|
end
|
7
8
|
|
8
9
|
def run
|
9
|
-
Beanbox::Scraper.new("https://beanbox.co/coffee")
|
10
|
+
@scraper = Beanbox::Scraper.new("https://beanbox.co/coffee/best-sellers")
|
11
|
+
@scraper.scrape
|
10
12
|
self.list_coffees
|
11
13
|
self.list_menu
|
12
14
|
end
|
@@ -20,7 +22,7 @@ class Beanbox::CLI
|
|
20
22
|
end
|
21
23
|
|
22
24
|
def list_detail(coffee)
|
23
|
-
|
25
|
+
@scraper.scrape_detail(coffee)
|
24
26
|
puts
|
25
27
|
puts "#{coffee.name} roasted by #{coffee.roaster}"
|
26
28
|
puts "Type: #{coffee.type}"
|
@@ -60,6 +62,18 @@ class Beanbox::CLI
|
|
60
62
|
self.list_detail(Beanbox::Coffee.all[2])
|
61
63
|
when "4"
|
62
64
|
self.list_detail(Beanbox::Coffee.all[3])
|
65
|
+
when "5"
|
66
|
+
self.list_detail(Beanbox::Coffee.all[4])
|
67
|
+
when "6"
|
68
|
+
self.list_detail(Beanbox::Coffee.all[5])
|
69
|
+
when "7"
|
70
|
+
self.list_detail(Beanbox::Coffee.all[6])
|
71
|
+
when "8"
|
72
|
+
self.list_detail(Beanbox::Coffee.all[7])
|
73
|
+
when "9"
|
74
|
+
self.list_detail(Beanbox::Coffee.all[8])
|
75
|
+
when "10"
|
76
|
+
self.list_detail(Beanbox::Coffee.all[9])
|
63
77
|
when "list"
|
64
78
|
self.list_coffees
|
65
79
|
self.list_menu
|
data/lib/beanbox/scraper.rb
CHANGED
@@ -3,33 +3,56 @@ require 'open-uri'
|
|
3
3
|
require 'pry'
|
4
4
|
|
5
5
|
class Beanbox::Scraper
|
6
|
-
attr_accessor :URL_path, :doc, :results
|
6
|
+
attr_accessor :URL_path, :doc, :results, :detail
|
7
7
|
|
8
8
|
def initialize(u)
|
9
9
|
@URL_path = u
|
10
10
|
@results = []
|
11
11
|
end
|
12
12
|
|
13
|
+
|
13
14
|
def scrape
|
14
15
|
@doc = Nokogiri::HTML(open(@URL_path))
|
15
|
-
@doc.css("div.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
16
|
+
@doc.css("div.ten.columns.center.results").first.css("div.roast-list").each_with_index do |element, i|
|
17
|
+
if ((0..9).to_a.include?(i))
|
18
|
+
coffee = Beanbox::Coffee.new
|
19
|
+
coffee.name = element.css("h2").text
|
20
|
+
# This next line normalizes the name, which is returned in all caps
|
21
|
+
coffee.name = coffee.name.split(" ").collect{|n| n.capitalize}.join(" ")
|
22
|
+
coffee.roaster = element.css("h3.roast-item-roaster a").text
|
23
|
+
coffee.price = element.css("h4.roast-item-price").text.split("\n")[1]
|
24
|
+
coffee.url = element.css("a").attribute("href").value
|
25
|
+
# binding.pry
|
26
|
+
self.results << coffee # add each coffee to @results
|
27
|
+
end
|
24
28
|
end
|
25
29
|
|
26
30
|
self.results
|
27
31
|
end
|
28
32
|
|
33
|
+
|
34
|
+
# def scrape
|
35
|
+
# @doc = Nokogiri::HTML(open(@URL_path))
|
36
|
+
# @doc.css("div.twelve.columns.center.pad-top").first.css("div.roast-list").each do |element|
|
37
|
+
# coffee = Beanbox::Coffee.new
|
38
|
+
# coffee.name = element.css("h2").text
|
39
|
+
# # This next line normalizes the name, which is returned in all caps
|
40
|
+
# coffee.name = coffee.name.split(" ").collect{|n| n.capitalize}.join(" ")
|
41
|
+
# coffee.roaster = element.css("h3.roast-item-roaster a").text
|
42
|
+
# coffee.price = element.css("h4.roast-item-price").text.split("\n")[1]
|
43
|
+
# coffee.url = element.css("a").attribute("href").value
|
44
|
+
# self.results << coffee # add each coffee to @results
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# self.results
|
48
|
+
# end
|
49
|
+
|
50
|
+
|
29
51
|
def scrape_detail(coffee)
|
30
|
-
@
|
31
|
-
|
32
|
-
coffee.
|
33
|
-
coffee.
|
52
|
+
@detail = Nokogiri::HTML(open(coffee.url))
|
53
|
+
# binding.pry
|
54
|
+
coffee.description = @detail.css("div.bb p").text.strip
|
55
|
+
coffee.type = @detail.css("div.centered-mobile span.rt a").first.text
|
56
|
+
coffee.roast_level = @detail.css("div.centered-mobile span.rt a").first.text
|
34
57
|
end
|
35
58
|
end
|
data/lib/beanbox/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beanbox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aspen James
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,7 +84,6 @@ files:
|
|
84
84
|
- LICENSE.txt
|
85
85
|
- README.md
|
86
86
|
- Rakefile
|
87
|
-
- beanbox-0.1.1.gem
|
88
87
|
- beanbox.gemspec
|
89
88
|
- bin/beanbox
|
90
89
|
- bin/console
|
@@ -107,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
106
|
requirements:
|
108
107
|
- - "~>"
|
109
108
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
109
|
+
version: 2.3.3
|
111
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
111
|
requirements:
|
113
112
|
- - ">="
|
data/beanbox-0.1.1.gem
DELETED
Binary file
|