Files
fredy/lib/provider/wgGesucht.js

48 lines
1.5 KiB
JavaScript
Raw Normal View History

import { isOneOf, buildHash } from '../utils.js';
import checkIfListingIsActive from '../services/listings/listingActiveTester.js';
let appliedBlackList = [];
2019-06-10 14:40:28 +02:00
function normalize(o) {
2025-07-23 08:47:26 +02:00
const id = buildHash(o.id, o.price);
const link = `https://www.wg-gesucht.de${o.link}`;
const image = o.image != null ? o.image.replace('small', 'large') : null;
return Object.assign(o, { id, link, image });
2019-06-10 14:40:28 +02:00
}
2019-06-10 14:40:28 +02:00
function applyBlacklist(o) {
const titleNotBlacklisted = !isOneOf(o.title, appliedBlackList);
const descNotBlacklisted = !isOneOf(o.description, appliedBlackList);
2025-07-23 08:47:26 +02:00
return o.id != null && titleNotBlacklisted && descNotBlacklisted;
2019-06-10 14:40:28 +02:00
}
const config = {
2025-07-23 08:47:26 +02:00
url: null,
crawlContainer: '#main_column .wgg_card',
sortByDateParam: 'sort_column=0&sort_order=0',
waitForSelector: 'body',
crawlFields: {
id: '@data-id',
details: '.row .noprint .col-xs-11 |removeNewline |trim',
price: '.middle .col-xs-3 |removeNewline |trim',
size: '.middle .text-right |removeNewline |trim',
title: '.truncate_title a |removeNewline |trim',
link: '.truncate_title a@href',
image: '.img-responsive@src',
2025-07-23 08:47:26 +02:00
},
normalize: normalize,
filter: applyBlacklist,
activeTester: checkIfListingIsActive,
2019-06-10 14:40:28 +02:00
};
export const init = (sourceConfig, blacklist) => {
2025-07-23 08:47:26 +02:00
config.enabled = sourceConfig.enabled;
config.url = sourceConfig.url;
appliedBlackList = blacklist || [];
};
export const metaInformation = {
2025-07-23 08:47:26 +02:00
name: 'Wg gesucht',
baseUrl: 'https://www.wg-gesucht.de/',
id: 'wgGesucht',
};
2025-07-23 08:47:26 +02:00
export { config };