const utils = require('../utils'); let appliedBlackList = []; let appliedBlacklistedDistricts = []; function normalize(o) { const id = o.id .split('/') .filter(Boolean) .reverse()[0]; const price = o.price.replace('Preis: ', ''); let size = o.size.replace('Wohnfläche: ', '').replace('ca. ', ''); size += ' / ' + o.rooms; const address = '---'; return Object.assign(o, { id, price, size, address }); } 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.title, appliedBlacklistedDistricts); return !isBlacklistedDistrict && titleNotBlacklisted && descNotBlacklisted; } const config = { enabled: null, url: null, crawlContainer: '#resultList .resultitem-content-container', crawlFields: { id: '.resultitem-content-container a@href', price: '.clear-row .rent | removeNewline | trim', title: '.resultitem-content-container a@title', link: '.resultitem-content-container a@href', rooms: '.resultitem-content-container .no-of-rooms | removeNewline | trim', size: '.resultitem-content-container .living-area | removeNewline | trim' }, paginate: '.markt_pagination_pageLinkNext .markt_pagination_link@href', normalize: normalize, filter: applyBlacklist }; exports.init = (sourceConfig, blacklist, blacklistedDistricts) => { config.enabled = sourceConfig.enabled; config.url = sourceConfig.url; appliedBlackList = blacklist; appliedBlacklistedDistricts = blacklistedDistricts; }; //must match the id of the source given in the config! exports.id = () => 'kalaydo'; exports.config = config;