UNPKG

rsshub

Version:
42 lines (41 loc) 1.75 kB
import { t as rofetch } from "./ofetch-eUBdfMpp.mjs"; import { t as parseDate } from "./parse-date-CjhZE69i.mjs"; import { t as cache_default } from "./cache-CiDoUSLo.mjs"; //#region lib/routes/asml/press-releases.ts const route = { path: "/press-releases", categories: ["new-media"], example: "/asml/press-releases", parameters: {}, name: "Press releases & announcements", maintainers: ["nczitzk"], handler }; async function handler() { const rootUrl = "https://www.asml.com"; const currentUrl = `${rootUrl}/en/news/press-releases`; const buildId = await cache_default.tryGet("asml:buildId", async () => { return (await rofetch(currentUrl)).match(/"buildId":"(.*?)"/)[1]; }); const response = await rofetch(`${rootUrl}/_next/data/${buildId}/en/news/press-releases.json`, { query: { path: ["news", "press-releases"] } }); const list = Object.values(response.pageProps.componentProps)[0].articles.flat().map((article) => ({ title: article.title.data.value.trim(), link: `${rootUrl}${article.url.path}`, pubDate: parseDate(article.articleDate.data.value), path: article.url.path })); return { title: "Press releases | ASML", link: currentUrl, item: await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const { fields, placeholders } = (await rofetch(`${rootUrl}/_next/data/${buildId}${item.path}.json`)).pageProps.page.layout.sitecore.route; return { ...item, description: placeholders["headless-main"].find((component) => component.componentName === "CustomContainer").placeholders["content-component-placeholder"].map((component) => component.fields.content.value).join(""), pubDate: parseDate(fields.publicationDate.value) }; }))) }; } //#endregion export { route };