UNPKG

rsshub

Version:
93 lines (91 loc) 3.2 kB
import { n as init_esm_shims, t as __dirname } from "./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 { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/ianspriggs/index.ts init_esm_shims(); const route = { path: "/:category?", categories: ["blog"], example: "/ianspriggs/portraits", parameters: { category: "Category, see below, 3D PORTRAITS by default" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "Category", maintainers: ["nczitzk"], handler, description: `| 3D PORTRAITS | CHARACTERS | | ------------ | ---------- | | portraits | characters |` }; async function handler(ctx) { const { category = "portraits" } = ctx.req.param(); const limit = ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit"), 10) : 30; const author = "Ian Spriggs"; const rootUrl = "https://ianspriggs.com"; const currentUrl = new URL(category, rootUrl).href; const { data: response } = await got_default(currentUrl); const $ = load(response); let items = $("div.work-item").slice(0, limit).toArray().map((item) => { item = $(item); const image = item.find("img").first(); return { title: item.find("div.work-info").text(), link: item.find("a").prop("href"), description: art(path.join(__dirname, "templates/description-482b9ef2.art"), { images: image?.prop("src") ? [{ src: image.prop("src").replace(/_thumbnail\./, "."), alt: image.prop("alt") }] : void 0 }), author, pubDate: parseDate(item.find("div.work-info p").last(), "YYYY"), enclosure_url: image?.prop("src") ?? void 0, enclosure_type: image?.prop("src") ? "image/jpeg" : void 0 }; }); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const { data: detailResponse } = await got_default(item.link); const content = load(detailResponse); const images = content("div.work-item img").toArray().map((item$1) => { item$1 = content(item$1); return { src: item$1.prop("src").replace(/-\d+x\d+\./, "."), alt: item$1.prop("alt") }; }); item.title = content("div.project-title").text(); item.description += art(path.join(__dirname, "templates/description-482b9ef2.art"), { images, description: content("div.nectar-fancy-ul").html() }); item.pubDate = parseDate(content("span.subheader").last().text(), "YYYY"); return item; }))); const icon = new URL("favicon.ico", rootUrl).href; return { item: items, title: $("title").text(), link: currentUrl, description: $("meta[property=\"og:description\"]").prop("content"), language: $("html").prop("lang"), icon, logo: icon, subtitle: $("a[aria-current=\"page\"] span.menu-title-text").text(), author }; } //#endregion export { route };