UNPKG

rsshub

Version:
142 lines (140 loc) 3.56 kB
import "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; //#region lib/routes/geocaching/blogs.ts const route = { path: "/blogs/:language?", categories: ["blog"], example: "/geocaching/blogs/en", parameters: { language: { description: "language", default: "en", options: [ { value: "en", label: "English" }, { value: "de", label: "Deutsch" }, { value: "fr", label: "Français" }, { value: "es", label: "Español" }, { value: "nl", label: "Nederlands" }, { value: "cs", label: "Čeština" }, { value: "all", label: "Not Specified" } ] } }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["geocaching.com/blog/", "geocaching.com/"] }], name: "Official Blogs", maintainers: ["HankChow", "Konano"], handler, url: "geocaching.com/blog/" }; const languageToCategory = { de: 140, fr: 138, es: 702, nl: 737, cs: 1404 }; const languageToLabel = { de: "Deutsch", fr: "Français", es: "Español", nl: "Nederlands", cs: "Čeština" }; async function handler(ctx) { const baseUrl = "https://www.geocaching.com"; const language = ctx.req.param("language") ?? "en"; const searchParams = { per_page: ctx.req.query("limit") ?? 20, _embed: 1, _fields: [ "id", "title", "link", "guid", "content", "date_gmt", "modified_gmt", "_embedded", "_links" ].join(",") }; if (language === "en") searchParams.categories_exclude = Object.values(languageToCategory).join(","); else if (language in languageToCategory) searchParams.categories = languageToCategory[language]; else if (language === "all") {} else throw new Error(`Unsupported language: ${language}`); const { data: response } = await got_default(`${baseUrl}/blog/wp-json/wp/v2/posts`, { searchParams }); const items = response.map((item) => { const media = item._embedded["wp:featuredmedia"][0]; const mediaDetails = media?.media_details; const mediaSize = mediaDetails?.sizes.large || mediaDetails?.sizes.full; return { title: item.title.rendered.trim(), link: item.link, guid: item.guid.rendered, description: item.content.rendered, pubDate: parseDate(item.date_gmt), updated: parseDate(item.modified_gmt), author: item._embedded.author[0].name, category: item._embedded["wp:term"][0].map((category) => category.name.trim()), media: mediaSize ? { content: { url: media.source_url, type: media.mime_type, height: mediaDetails.height, width: mediaDetails.width, fileSize: mediaDetails.filesize }, thumbnail: { url: mediaSize.source_url, height: mediaSize.height, width: mediaSize.width } } : void 0 }; }); return { title: language in languageToLabel ? `Geocaching Blog - ${languageToLabel[language]}` : "Geocaching Blog", link: `${baseUrl}/blog/`, language: language in languageToCategory ? language : "en", image: "https://i.ytimg.com/vi_webp/G28VxvBoSLQ/maxresdefault.webp", icon: `${baseUrl}/blog/favicon.ico`, logo: `${baseUrl}/blog/favicon.ico`, description: "Geocaching Official Blog", item: items, allowEmpty: true }; } //#endregion export { route };