Files
fredy/lib/provider/kleinanzeigen.js

51 lines
1.6 KiB
JavaScript
Raw Normal View History

2018-01-20 20:23:27 +01:00
const utils = require('../utils');
let appliedBlackList = [];
let appliedBlacklistedDistricts = [];
2018-01-20 20:23:27 +01:00
function normalize(o) {
const size = o.size || '--- m²';
2018-01-20 20:23:27 +01:00
return Object.assign(o, { size });
2018-01-20 20:23:27 +01:00
}
function applyBlacklist(o) {
const titleNotBlacklisted = !utils.isOneOf(o.title, appliedBlackList);
const descNotBlacklisted = !utils.isOneOf(o.description, appliedBlackList);
const isBlacklistedDistrict =
appliedBlacklistedDistricts.length === 0 ? false : utils.isOneOf(o.description, appliedBlacklistedDistricts);
2018-01-20 20:23:27 +01:00
return !isBlacklistedDistrict && titleNotBlacklisted && descNotBlacklisted;
2018-01-20 20:23:27 +01:00
}
const config = {
enabled: null,
url: null,
crawlContainer: '#srchrslt-adtable .ad-listitem',
crawlFields: {
id: '.aditem@data-adid | int',
price: '.aditem-details strong | removeNewline | trim',
size: '.aditem-main .text-module-end span:nth-child(2) | removeNewline | trim',
title: '.aditem-main .text-module-begin a | removeNewline | trim',
link: '.aditem-main .text-module-begin a@href | removeNewline | trim',
description: '.aditem-main p:not(.text-module-end) | removeNewline | trim',
address: '.aditem-details | trim | removeNewline'
},
paginate: '#srchrslt-pagination .pagination-next@href',
normalize: normalize,
filter: applyBlacklist
2018-01-20 20:23:27 +01:00
};
exports.init = (sourceConfig, blacklist, blacklistedDistricts) => {
config.enabled = sourceConfig.enabled;
config.url = sourceConfig.url;
appliedBlacklistedDistricts = blacklistedDistricts;
appliedBlackList = blacklist;
};
//must match the id of the source given in the config!
exports.id = () => 'kleinanzeigen';
exports.config = config;