From 06c4ebb975477cb65a1b676493320d30eda103f4 Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Wed, 12 Jun 2024 14:15:21 +0200 Subject: [PATCH] fixing immoswp --- lib/provider/immoswp.js | 67 ++++++++++++++++++----------------- test/provider/immoswp.test.js | 2 -- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/lib/provider/immoswp.js b/lib/provider/immoswp.js index 49d6d52..a63ec7c 100755 --- a/lib/provider/immoswp.js +++ b/lib/provider/immoswp.js @@ -1,44 +1,47 @@ import utils from '../utils.js'; + let appliedBlackList = []; + function normalize(o) { - const id = o.id.substring(o.id.indexOf('-') + 1, o.id.length); - const size = o.size || 'N/A m²'; - const price = (o.price || '--- €').replace('Preis auf Anfrage', '--- €'); - const address = o.address || 'No address available'; - const title = o.title || 'No title available'; - const link = `https://immo.swp.de/immobilien/${id}`; - const description = o.description; - return Object.assign(o, { id, address, price, size, title, link, description }); + const id = o.id.substring(o.id.indexOf('-') + 1, o.id.length); + const size = o.size || 'N/A m²'; + const price = (o.price || '--- €').replace('Preis auf Anfrage', '--- €'); + const title = o.title || 'No title available'; + const link = `https://immo.swp.de/immobilien/${id}`; + const description = o.description; + return Object.assign(o, {id, price, size, title, link, description}); } + function applyBlacklist(o) { - const titleNotBlacklisted = !utils.isOneOf(o.title, appliedBlackList); - const descNotBlacklisted = !utils.isOneOf(o.description, appliedBlackList); - return titleNotBlacklisted && descNotBlacklisted; + const titleNotBlacklisted = !utils.isOneOf(o.title, appliedBlackList); + const descNotBlacklisted = !utils.isOneOf(o.description, appliedBlackList); + return titleNotBlacklisted && descNotBlacklisted; } + const config = { - url: null, - crawlContainer: '.js-serp-item', - sortByDateParam: 's=most_recently_updated_first', - crawlFields: { - id: '@id', - price: 'div.item__spec.item-spec-price | trim', - size: 'div.item__spec.item-spec-area | trim', - title: 'a.js-item-title-link@title', - address: 'div.item__locality | removeNewline | trim', - description: 'div.item__main-info-points.clearfix p small | removeNewline | trim', - }, - paginate: 'li.page-item.pagination__item a.page-link@href', - normalize: normalize, - filter: applyBlacklist, + url: null, + crawlContainer: '.js-serp-item', + sortByDateParam: 's=most_recently_updated_first', + crawlFields: { + id: '.js-bookmark-btn@data-id', + price: 'div.align-items-start div:first-child | trim', + size: 'div.align-items-start div:nth-child(3) | trim', + title: '.card-title h2 | trim', + link: '.ci-search-result__link@href', + description: '.js-show-more-item-sm | removeNewline | trim', + }, + paginate: 'li.page-item.pagination__item a.page-link@href', + normalize: normalize, + filter: applyBlacklist, }; export const init = (sourceConfig, blacklist) => { - config.enabled = sourceConfig.enabled; - config.url = sourceConfig.url; - appliedBlackList = blacklist || []; + config.enabled = sourceConfig.enabled; + config.url = sourceConfig.url; + appliedBlackList = blacklist || []; }; export const metaInformation = { - name: 'Immo Südwest Presse', - baseUrl: 'https://immo.swp.de/', - id: 'immoswp', + name: 'Immo Südwest Presse', + baseUrl: 'https://immo.swp.de/', + id: 'immoswp', }; -export { config }; +export {config}; diff --git a/test/provider/immoswp.test.js b/test/provider/immoswp.test.js index 6ee7f5b..603bba9 100644 --- a/test/provider/immoswp.test.js +++ b/test/provider/immoswp.test.js @@ -25,12 +25,10 @@ describe('#immoswp testsuite()', () => { expect(notify.size).to.be.a('string'); expect(notify.title).to.be.a('string'); expect(notify.link).to.be.a('string'); - expect(notify.address).to.be.a('string'); /** check the values if possible **/ expect(notify.price).that.does.include('€'); expect(notify.title).to.be.not.empty; expect(notify.link).that.does.include('https://immo.swp.de'); - expect(notify.address).to.be.not.empty; }); resolve(); });