beeradvocate 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/beer +8 -2
- data/lib/beer_advocate.rb +27 -11
- data/lib/beer_advocate/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fb8952be83417794f9222e13296641c7d87ffb1
|
4
|
+
data.tar.gz: b8017d20a268d438c73a4694d22ebc4196e34ab1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 331eb8c63e71c5c3b6369fedb03eecaace7bd7f70b80350b4057fd6ccbbb30da02e3bc25ee79663d628f0922149a9006254c5f98987ac3476260e788c1e204b9
|
7
|
+
data.tar.gz: 22bcf557a75b6b227f0b8100a83b1878aec01d8577a4d1a11b551bc7d9fd61d9c1530e7c5fb22e0afc2cd72a37f47e109ba5e846e1e8a379eac2a1fa05d2188f
|
data/bin/beer
CHANGED
@@ -9,9 +9,15 @@ end
|
|
9
9
|
|
10
10
|
beer_name = ARGV.join(' ')
|
11
11
|
|
12
|
-
url = BeerAdvocate.get_url(beer_name)
|
12
|
+
unless url = BeerAdvocate.get_url(beer_name)
|
13
|
+
STDERR.puts "Couldn't get url for '#{beer_name}'"
|
14
|
+
exit 2
|
15
|
+
end
|
13
16
|
|
14
|
-
beer_details = BeerAdvocate.get_beer_details_from_url(url)
|
17
|
+
unless beer_details = BeerAdvocate.get_beer_details_from_url(url)
|
18
|
+
STDERR.puts "Couldn't parse beer details for url '#{url}'"
|
19
|
+
exit 3
|
20
|
+
end
|
15
21
|
|
16
22
|
puts JSON.pretty_generate(beer_details)
|
17
23
|
|
data/lib/beer_advocate.rb
CHANGED
@@ -8,23 +8,32 @@ require 'beer_advocate/version'
|
|
8
8
|
module BeerAdvocate
|
9
9
|
class << self
|
10
10
|
|
11
|
-
## Given a beer name,
|
12
|
-
## search result.
|
13
|
-
def get_url(beer_name)
|
14
|
-
|
15
|
-
"http://www.beeradvocate.com/search/?qt=beer&q=" +
|
11
|
+
## Given a beer name, returns the URL for the top Beer Advocate beer
|
12
|
+
## search result. Throws an exception if something goes wrong.
|
13
|
+
def get_url!(beer_name)
|
14
|
+
search_url = "http://www.beeradvocate.com/search/?qt=beer&q=" +
|
16
15
|
URI.escape(beer_name)
|
17
|
-
))
|
18
16
|
|
19
|
-
|
20
|
-
|
17
|
+
page = Nokogiri::HTML(open(search_url))
|
18
|
+
|
19
|
+
href = page.css('ul li a').
|
20
|
+
map {|tag| tag.attributes['href'].text rescue nil}.
|
21
|
+
select {|h| h && h.match(%r{^/beer/profile})}.
|
22
|
+
first
|
23
|
+
|
24
|
+
"http://www.beeradvocate.com" + href
|
21
25
|
end
|
22
26
|
|
27
|
+
## Given a beer name, returns the URL for the top Beer Advocate beer
|
28
|
+
## search result. Returns nil upon error.
|
29
|
+
def get_url(beer_name)
|
30
|
+
get_url!(beer_name) rescue nil
|
31
|
+
end
|
23
32
|
|
24
|
-
## Given a URL for a Beer Advocate beer page,
|
33
|
+
## Given a URL for a Beer Advocate beer page, returns a hash containing
|
25
34
|
## info about the beer, including `name`, `brewery`, `style`, `abv`,
|
26
|
-
## and `score`.
|
27
|
-
def get_beer_details_from_url(url)
|
35
|
+
## and `score`. Throws an exception if something goes wrong.
|
36
|
+
def get_beer_details_from_url!(url)
|
28
37
|
page = Nokogiri::HTML(open(url))
|
29
38
|
|
30
39
|
table = page.css('#ba-content table')[1]
|
@@ -55,6 +64,13 @@ module BeerAdvocate
|
|
55
64
|
}
|
56
65
|
end
|
57
66
|
|
67
|
+
## Given a URL for a Beer Advocate beer page, returns a hash containing
|
68
|
+
## info about the beer, including `name`, `brewery`, `style`, `abv`,
|
69
|
+
## and `score`. Returns nil upon error.
|
70
|
+
def get_beer_details_from_url(url)
|
71
|
+
get_beer_details_from_url!(url) rescue nil
|
72
|
+
end
|
73
|
+
|
58
74
|
end
|
59
75
|
end
|
60
76
|
|