-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.js
More file actions
71 lines (64 loc) · 1.71 KB
/
models.js
File metadata and controls
71 lines (64 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
var request = require('request');
var cheerio = require('cheerio');
function getBeerEntry(beer) {
lines = beer.toString().split("\n");
var index = lines[1];
if (index) {
index = index.replace(')', '');
}
index = parseInt(index);
if (!index) {
return null;
}
var brewery = lines[2].replace(/[^a-zA-Z0-9\s]/, '').replace(/^\s+|\s+$/g,'');
var name = lines[3].replace(/[^a-zA-Z0-9\s]/, '').replace(/^\s+|\s+$/g,'');
var type = beer.attr('class').split(" ")[1];
var growler_price = beer.children('.beer_meta_xlarge').text();
var pint_price = beer.children('.beer_meta_small').text();
var abv = beer.children('.beer_meta_big').text();
return makeBeerObject(index, brewery, name, type, growler_price, pint_price, abv);
}
function makeBeerObject(index, brewery, name, type, growler_price, pint_price, abv) {
return {"index" : index,
"brewery" : brewery,
"name" : name,
"type" : type,
"growler_price" : growler_price,
"pint_price" : pint_price,
"abv" : abv,
};
}
function isHeader(beer) {
return beer.attr('class').indexOf('header') >= 0;
}
function scrape(html, location) {
var $ = cheerio.load(html);
var beers = $(".beer_even, .beer_odd");
var out = [];
var beer, name, index, entry;
beers.each(function(i, elem) {
beer = $(this);
if (!isHeader(beer)) {
entry = getBeerEntry(beer);
if (entry) {
out.push(entry);
}
}
});
return out;
}
function getBeers (location, callback) {
if (location == 'cd') {
url = 'http://cd.chucks85th.com';
} else {
url = 'http://www.chucks85th.com';
}
request(url, function (err, response, html) {
if (!err) {
callback(scrape(html));
} else {
console.log(err);
}
});
}
exports.getBeers = getBeers;