forked from 92bondstreet/carrez
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
112 lines (81 loc) · 2.93 KB
/
server.js
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
var modLeboncoin = require('./leboncoin'),
modAgents = require('./agents'),
express = require('express'),
app = express(),
bodyParser = require('body-parser');
// MOTEUR DE TEMPLATE
app.set('view engine','ejs');
// MIDDLEWARE
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static('public'));
// ROUTES
app.get('/', (request,response) => {
response.render('pages/index');
console.log('Carrez: \n Example to take: \n https://www.leboncoin.fr/ventes_immobilieres/1096652386.htm?ca=12_s');
});
app.post('/',(request,response)=> {
let link = request.body.link;
if( link === undefined || link === '') {
response.render('pages/index', {error:'No link detect, please enter a link'});
} else if( link.indexOf('https://www.leboncoin.fr/ventes_immobilieres/') == -1){
response.render('pages/index', {error:'Please check if your link is conform ( ex : https://www.leboncoin.fr/ventes_immobilieres/...)'});
} else {
try {
modLeboncoin.scrap( link, (data1) => {
let result;
let city;
let code;
let urlAgent;
let diff;
let propPrice;
let avPrice;
// Récuperation et traitement de la ville pour la ré-inserer
// avec le bon format dans l'url meilleursagents
let fullCity = data1.address.trim();
let nbesp = fullCity.split(' ').length - 1;
let tabCity = fullCity.split(' ');
if(nbesp > 1){
code = tabCity[tabCity.length-1];
tabCity.pop();
city = tabCity.join('-').toLowerCase();
} else {
code = tabCity[1];
city = tabCity[0].toLowerCase();
}
urlAgent = `https://www.meilleursagents.com/prix-immobilier/${city}-${code}`;
modAgents.scrap(urlAgent,(data2) => {
if(data1.type === "Appartement"){
let price = data1.surface * data2.flat;
diff = price - data1.price ;
if(diff < 0){
diff = diff*(-1);
result = `- ${diff} €`;
} else {
result = `+ ${diff} €`;
}
propPrice = `Price of the property : ${data1.price} €`;
avPrice = `Average price in this city (${city}) : ${price} €`
} else if (data1.type === "Maison") {
let price = data1.surface * data2.house;
diff = price - data1.price;
if(diff < 0){
diff = diff*(-1);
result = `- ${diff} €`;
} else {
result = `+ ${diff} €`;
}
propPrice = `Price of the property : ${data1.price} €`;
avPrice = `Average price in this city (${city}) : ${price} €`
} else {
result = "Sorry, we do not treat this kind of property";
}
response.render('pages/index',{result,propPrice,avPrice});
});
});
}
catch (error) {
response.render('pages/index', {error:'Please enter a link'});
}
}
});
app.listen(8080);