UNPKG

rsshub

Version:
91 lines (89 loc) 3.03 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import { t as ofetch_default } from "./ofetch-BIyrKU3Y.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import path from "node:path"; //#region lib/routes/twreporter/fetch-article.ts init_esm_shims(); async function fetch(slug) { const post = (await ofetch_default(`https://go-api.twreporter.org/v2/posts/${slug}?full=true`)).data; const time = post.published_date; let authors = ""; if (post.writers) authors = post.writers.map((writer) => writer.job_title ? writer.job_title + " / " + writer.name : "文字 / " + writer.name).join(","); let photographers = ""; if (post.photographers) { photographers = post.photographers.map((photographer) => { let title = "攝影 / "; if (photographer.job_title) title = photographer.job_title + " / "; return title + photographer.name; }).join(","); authors += ";" + photographers; } const imageSource = post.hero_image ?? post.og_image; const bannerImage = imageSource?.resized_targets.desktop.url; const caption = post.leading_image_description; const bannerDescription = imageSource?.description ?? ""; const ogDescription = post.og_description; const banner = imageSource ? art(path.join(__dirname, "templates/image-51014ea7.art"), { image: bannerImage, description: bannerDescription, caption }) : ""; function format(type, content) { let block = ""; if (content !== "" && type !== "embeddedcode") switch (type) { case "image": case "slideshow": block = content.map((image) => art(path.join(__dirname, "templates/image-51014ea7.art"), { image: image.desktop.url, description: image.description, caption: image.description })).join("<br>"); break; case "blockquote": block = `<blockquote>${content}</blockquote>`; break; case "header-one": block = `<h1>${content}</h1>`; break; case "header-two": block = `<h2>${content}</h2>`; break; case "infobox": { const box = content[0]; block = `<h2>${box.title}</h2>${box.body}`; break; } case "youtube": { const id = content[0].youtubeId.split("?")[0]; block = art(path.join(__dirname, "templates/youtube-29c80cf5.art"), { video: id }); break; } case "quoteby": { const quote = content[0]; block = `<blockquote>${quote.quote}</blockquote><p>${quote.quoteBy}</p>`; break; } default: block = `${content}<br>`; } return block; } const contents = [ banner, ogDescription, post.content.api_data.map((item) => { const content = item.content; const type = item.type; return format(type, content); }).filter(Boolean).join("<br>") ].filter(Boolean).join("<br><br>"); return { author: authors, description: contents, link: `https://www.twreporter.org/a/${slug}`, guid: `https://www.twreporter.org/a/${slug}`, pubDate: parseDate(time, "YYYY-MM-DDTHH:mm:ssZ") }; } //#endregion export { fetch as t };