Files
old-web/app/services/crawlerService.js

56 lines
1.7 KiB
JavaScript
Raw Normal View History

2019-06-13 15:49:31 +02:00
const Promise = require("bluebird");
const OlxCrawler = require("../helpers/crawlers/olxClawler");
2019-06-20 14:51:14 +02:00
const db = require("../models/index");
2019-06-13 15:49:31 +02:00
const olxCrawler = new OlxCrawler(1, 2, 3);
2019-06-13 15:49:31 +02:00
const crawlers = [
olxCrawler,
2019-06-20 21:27:51 +02:00
];
2019-06-13 15:49:31 +02:00
2019-06-20 21:27:51 +02:00
async function crawlAll() {
Promise.map(crawlers, function (crawler) {
return crawler.crawl();
}).then(async (results) => {
try {
const marketAlertsFromDb = await db.MarketAlert.findAll();
const marketAlerts = [];
const mergedResults = [].concat.apply([], results);
for (const result of mergedResults) {
marketAlerts.push({
url: result.url,
realestateOrigin: "OLX",
2019-06-24 11:49:13 +02:00
originId: 1,
size: result.size,
price: result.price,
email: result.email,
// lastDate: DataTypes.STRING,
municipality: result.municipality,
region: result.region,
2019-06-24 11:49:13 +02:00
gardenSize: isNaN(result.gardenSize) ? 0 : result.gardenSize,
realEstateType: result.realEstateType
})
}
try {
console.log(marketAlerts);
const filteredMarketAlerts = marketAlerts.filter((elem) => !marketAlertsFromDb.find(({ url }) => elem.url === url));
await db.MarketAlert.bulkCreate(filteredMarketAlerts);
process.exit()
} catch (e) {
console.log("Could not bulkCreate marketalers reason: ", e);
}
} catch (e) {
console.log("Error crawling. Trying next crawler! ", e);
}
})
};
crawlAll();
2019-06-20 21:27:51 +02:00