mirror of
https://github.com/orangecoding/fredy.git
synced 2026-06-16 12:31:07 +00:00
* feat(): create map component, add area filtering to the job config * feat(): filter listings by area filter * chore(): cleanup * feat(): solve feedback * feat(): solve most providers * feat(): solve maybe other providers * feat(): add specFilter config, also add rooms to listing * feat(): change tests * feat(): fix kleinanzeigen parser * feat(): add spec filter switch for listing overviiews * feat(): add rooms and size to the overview and detail of a listing * feat(): rem label * feat(): add types, update providers, they now return specs as numbers * feat(): add jsonconfig to enable type checks * feat: add type for prividerConfig, add fieldNames per provider * feat: fix tests, provider, add formatListing * chore: remov duplicates * feat(): fix tests * feat: fix immoscout * chore: geojson typing * feat: solve requested changes
26 lines
1.6 KiB
JavaScript
26 lines
1.6 KiB
JavaScript
/*
|
|
* Copyright (c) 2026 by Christian Kellner.
|
|
* Licensed under Apache-2.0 with Commons Clause and Attribution/Naming Clause
|
|
*/
|
|
|
|
/** @import { ParsedListing } from './listing.js' */
|
|
|
|
/**
|
|
* @typedef {Object} ProviderConfig
|
|
* @property {string} [url] Base URL to crawl.
|
|
* @property {string} [sortByDateParam] Query parameter used to enforce sorting by date.
|
|
* @property {string} [waitForSelector] CSS selector to wait for before parsing content.
|
|
* @property {Object.<string, string>} crawlFields Mapping of field names to selectors/paths.
|
|
* @property {string[]} fieldNames List of field names that this provider supports.
|
|
* @property {string} [crawlContainer] CSS selector for the container holding listing items.
|
|
* @property {(raw: any) => ParsedListing} normalize Function to convert raw scraped data into a ParsedListing shape.
|
|
* @property {(listing: ParsedListing) => boolean} filter Function to filter out unwanted listings.
|
|
* @property {(url: string, waitForSelector?: string) => Promise<any[]>} [getListings] Optional override to fetch listings.
|
|
* @property {(listing:ParsedListing, browser:any)=>Promise<ParsedListing>} [providerConfig.fetchDetails] Optional per-listing detail enrichment. Called in parallel for each new listing after deduplication. Receives the shared browser instance. Must always resolve (never reject).
|
|
* @property {Object} [puppeteerOptions] Puppeteer specific options.
|
|
* @property {boolean} [enabled] Whether the provider is enabled.
|
|
* @property {(url: string) => Promise<number> | number} [activeTester] Function to check if a listing is still active.
|
|
*/
|
|
|
|
export {};
|