UNPKG

rsshub

Version:
65 lines (63 loc) 2.96 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import "./parse-date-BrP7mxXf.mjs"; import { r as getSubPath } from "./common-utils-vrWQFAEk.mjs"; import { load } from "cheerio"; //#region lib/routes/gesiba/index.ts const FEED_TITLE = "Wohnungen - Gesiba"; const FEED_LANGUAGE = "de"; const FEED_LOGO = "https://www.gesiba.at/assets/img/gesiba-logo.png"; const BASE_URL = "https://www.gesiba.at"; const MAGIC_QUERY_PARAMS = `p=actions/sprig-core/components/render&sprig%3AsiteId=0347ff5aeebc536543e7e865c4ed9dd97a9eb81ef054d47105ba6c4ca1da10801&sprig%3Aid=37ff8c3b5f5f7ad3bca87140e3fb8094cc656fcdc5d705c964065a830717c906component-vvyfgj&sprig%3Acomponent=e0737af02d4f2e1586c10610b098b6f75b51b994ddbd89cafd13ef07dc6da9ca&sprig%3Atemplate=3b669582a22c2742c4b713143ea4663ddba00812852f876074de96ad2fc04c24_components%2F_objectList&sprig%3Avariables%5BbaseUrl%5D=0c66aec55b6b038f0c9eb2ddea75d44d0c52b6fbc93960847d53f9d0af3f6162%2Fimmobilien%2Fwohnungen`; const route = { name: "Angebote", example: "/gesiba/verfuegbar=alle&plz[]=1100&plz[]=1120&size-from=45&size-to=80&rooms-from=2&rooms-to=3&betreuung=0", path: "*", maintainers: ["sk22"], categories: ["other"], description: ` Note that, on https://www.gesiba.at/immobilien/wohnungen, filters are added to the URL like \`&filter[plz]=1100,1120\`, but the endpoint used here expects it like \`&plz[]=1100&plz[]=1120\`, if multiple values are passed to one parameter `, async handler(ctx) { let params = getSubPath(ctx).slice(1); if (params.startsWith("&")) params = params.slice(1); const link = `${BASE_URL}/index.php?${MAGIC_QUERY_PARAMS}&${params}`; const $ = load(await ofetch_default(link)); return { title: FEED_TITLE, language: FEED_LANGUAGE, logo: FEED_LOGO, allowEmpty: true, item: $("#object-result a.card").toArray().map((el) => { const $el = $(el); const link$1 = BASE_URL + el.attribs.href; const image = BASE_URL + $el.find("img").attr("src"); const title = $el.find(".card-title").text().trim(); const price = $el.find(".price").text().trim(); const subtitle = $el.find(".mb-3 > p").toArray().map((el$1) => $(el$1).text().trim()).join(", "); const tagline = $el.find(".seperated:first-child > *").toArray().map((el$1) => $(el$1).text().trim()).join(", "); const metadata = $el.find(".justify-content-between > .flex-column > *").toArray().map((el$1) => $(el$1).text().trim()).join(", "); const description = (price ? `${price}, ` : "") + metadata + (tagline ? `, ${tagline}` : ""); return { guid: `${link$1}#${encodeURIComponent(metadata)}`, title: `${title}, ${subtitle}`, link: link$1, description, image, content: { html: $el.html() ?? $el.text(), text: $el.text() } }; }), link }; } }; //#endregion export { route };