beanbox 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|