UNPKG

rsshub

Version:
49 lines (48 loc) 1.61 kB
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 };