rsshub
Version:
Make RSS Great Again!
83 lines (81 loc) • 2.67 kB
JavaScript
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 "./helpers-DxBp0Pty.mjs";
import { t as art } from "./render-BQo6B4tL.mjs";
import { t as got_default } from "./got-KxxWdaxq.mjs";
import { t as timezone } from "./timezone-D8cuwzTY.mjs";
import path from "node:path";
import { load } from "cheerio";
import iconv from "iconv-lite";
//#region lib/routes/jjwxc/author.ts
init_esm_shims();
const route = {
path: "/author/:id?",
categories: ["reading"],
example: "/jjwxc/author/4364484",
parameters: { id: "作者 id,可在对应作者页中找到" },
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
name: "作者最新作品",
maintainers: ["nczitzk"],
handler
};
async function handler(ctx) {
const id = ctx.req.param("id");
const rootUrl = "https://www.jjwxc.net";
const currentUrl = new URL(`oneauthor.php?authorid=${id}`, rootUrl).href;
const { data: response } = await got_default(currentUrl, { responseType: "buffer" });
const $ = load(iconv.decode(response, "gbk"));
const bookEl = $("font a").first();
const bookInfoEl = bookEl.parent();
const bookName = bookEl.text();
const bookUrl = new URL(bookEl.prop("href"), rootUrl).href;
const bookStatus = bookInfoEl.find("font").first().text();
const bookWords = bookInfoEl.find("font").eq(1).text();
const bookUpdatedTime = bookInfoEl.parent().contents().last().text().trim();
const bookId = bookUrl.split(/=/).pop();
const title = `${bookName}(${bookStatus}/${bookWords}/${bookUpdatedTime})`;
const author = $("span[itemprop=\"name\"]").text();
const items = [{
title,
link: bookUrl,
description: art(path.join(__dirname, "templates/author-377436fc.art"), {
bookName,
bookUrl,
bookStatus,
bookWords,
bookUpdatedTime
}),
author,
category: [bookStatus],
guid: `jjwxc-${id}-${bookId}#${bookWords}`,
pubDate: timezone(parseDate(bookUpdatedTime), 8)
}];
const logoEl = $("div.logo a img");
const image = `https:${logoEl.prop("src")}`;
const icon = new URL("favicon.ico", rootUrl).href;
return {
item: items,
title: `${logoEl.prop("alt").replace(/logo/, "")} | ${author} - 最近更新`,
link: currentUrl,
description: $("span[itemprop=\"description\"]").text(),
language: "zh",
image,
icon,
logo: icon,
subtitle: $("meta[name=\"Description\"]").prop("content"),
author
};
}
//#endregion
export { route };