rsshub
Version:
Make RSS Great Again!
77 lines (75 loc) • 2.92 kB
JavaScript
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 };