rsshub
Version:
Make RSS Great Again!
49 lines (48 loc) • 1.61 kB
JavaScript
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs";
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as cache_default } from "./cache-CiDoUSLo.mjs";
import { load } from "cheerio";
//#region lib/routes/naver/comic.ts
const route = {
path: "/comic/:id",
categories: ["anime"],
example: "/naver/comic/651673",
parameters: { id: "titleId of naver webtoon" },
name: "Comic",
maintainers: ["zfanta"],
handler
};
const domain = "https://comic.naver.com";
async function handler(ctx) {
const { id } = ctx.req.param();
const comicLink = `${domain}/webtoon/list?titleId=${id}`;
const info = await cache_default.tryGet(`naver:comic:info:${id}`, () => rofetch(`${domain}/api/article/list/info?titleId=${id}`));
const list = await rofetch(`${domain}/api/article/list?titleId=${id}&page=1&sort=DESC`);
const item = await Promise.all(list.articleList.map((article) => {
const link = `${domain}/webtoon/detail?titleId=${id}&no=${article.no}`;
return cache_default.tryGet(link, async () => {
if (article.charge) return {
title: article.subtitle,
pubDate: parseDate(article.serviceDateDescription, "YY.MM.DD"),
link,
description: `<img src="${article.thumbnailUrl}">`
};
const $ = load(await rofetch(link));
return {
title: article.subtitle,
pubDate: parseDate(article.serviceDateDescription, "YY.MM.DD"),
link,
description: $("#comic_view_area > div.wt_viewer").html()
};
});
}));
return {
title: info.titleName,
link: comicLink,
description: info.synopsis,
image: info.thumbnailUrl,
item
};
}
//#endregion
export { route };