UNPKG

rsshub

Version:
77 lines (75 loc) 2.92 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as invalid_parameter_default } from "./invalid-parameter-rr4AgGpp.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/wnacg/common.ts init_esm_shims(); const categories = { 1: "同人誌 漢化", 2: "同人誌 CG畫集", 3: "同人誌 Cosplay", 5: "同人誌", 6: "單行本", 7: "雜誌&短篇", 9: "單行本 漢化", 10: "雜誌&短篇 漢化", 12: "同人誌 日語", 13: "單行本 日語", 14: "雜誌&短篇 日語", 16: "同人誌 English", 17: "單行本 English", 18: "雜誌&短篇 English", 19: "韓漫", 20: "韓漫 漢化", 21: "韓漫 生肉", 22: "同人誌 3D漫畫" }; const baseUrl = "https://www.wnacg.com"; async function handler(ctx) { const { cid, tag } = ctx.req.param(); if (cid && !Object.keys(categories).includes(cid)) throw new invalid_parameter_default("此分类不存在"); const url = `${baseUrl}/albums${cid ? `-index-cate-${cid}` : ""}${tag ? `-index-tag-${tag}` : ""}.html`; const { data } = await got_default(url); const $ = load(data); const list = $(".gallary_item").toArray().map((item) => { item = $(item); const href = item.find("a").attr("href"); const aid = href.match(/^\/photos-index-aid-(\d+)\.html$/)[1]; return { title: item.find("a").attr("title"), link: `${baseUrl}${href}`, pubDate: parseDate(item.find(".info_col").text().replace(/\d+張照片,\n創建於/, ""), "YYYY-MM-DD"), aid }; }); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const { data: descRes } = await got_default(item.link, { headers: { referer: encodeURI(url) } }); let $$1 = load(descRes); const author = $$1(".uwuinfo p").first().text(); const category = $$1(".tagshow").toArray().map((item$1) => $$1(item$1).text()); $$1(".addtags").remove(); const description = $$1(".uwconn").html(); const { data: data$1 } = await got_default(`${baseUrl}/photos-gallery-aid-${item.aid}.html`, { headers: { referer: `${baseUrl}/photos-slide-aid-${item.aid}.html` } }); $$1 = load(data$1); const imgListMatch = $$1("script").text().match(/var imglist = (\[.*]);"\);/)[1]; const imgList = JSON.parse(imgListMatch.replaceAll("url:", "\"url\":").replaceAll("caption:", "\"caption\":").replaceAll("fast_img_host+\\", "").replaceAll("\\", "")); item.author = author; item.category = category; item.description = art(path.join(__dirname, "templates/manga-9c92a0ba.art"), { description, imgList }); return item; }))); return { title: $("head title").text(), link: url, item: items }; } //#endregion export { handler as t };