rsshub
Version:
Make RSS Great Again!
65 lines (63 loc) • 2.96 kB
JavaScript
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 };