UNPKG

rsshub

Version:
110 lines (107 loc) 3.27 kB
import "./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 { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import { t as timezone } from "./timezone-D8cuwzTY.mjs"; import { load } from "cheerio"; //#region lib/routes/sakurazaka46/blog.ts const route = { path: "/blog/:id?/:page?", categories: ["new-media"], example: "/sakurazaka46/blog", parameters: { id: "Member ID, see below, `all` by default", page: "Page, `0` by default" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, name: "Sakurazaka46 Blog 櫻坂 46 博客", maintainers: [ "victor21813", "nczitzk", "akashigakki" ], handler, description: `Member ID | Member ID | Name | | --------- | ------------ | | 2000 | 三期生リレー | | 69 | 山下 瞳月 | | 68 | 村山 美羽 | | 67 | 村井 優 | | 66 | 向井 純葉 | | 65 | 的野 美青 | | 64 | 中嶋 優月 | | 63 | 谷口 愛季 | | 62 | 小島 凪紗 | | 61 | 小田倉 麗奈 | | 60 | 遠藤 理子 | | 59 | 石森 璃花 | | 58 | 守屋 麗奈 | | 57 | 増本 綺良 | | 56 | 幸阪 茉里乃 | | 55 | 大沼 晶保 | | 54 | 大園 玲 | | 53 | 遠藤 光莉 | | 51 | 山﨑 天 | | 50 | 森田 ひかる | | 48 | 松田 里奈 | | 47 | 藤吉 夏鈴 | | 46 | 田村 保乃 | | 45 | 武元 唯衣 | | 44 | 関 有美子 | | 43 | 井上 梨名 | | 15 | 原田 葵 | | 14 | 土生 瑞穂 | | 11 | 菅井 友香 | | 08 | 齋藤 冬優花 | | 07 | 小林 由依 | | 06 | 小池 美波 | | 04 | 尾関 梨香 | | 03 | 上村 莉菜 |` }; async function handler(ctx) { const id = ctx.req.param("id") ?? "all"; const page = ctx.req.param("page") ?? "0"; const rootUrl = "https://sakurazaka46.com"; const currentUrl = `${rootUrl}/s/s46/diary/blog/list${id === "all" ? `?page=${page}` : `?page=${page}&ct=${id}`}`; const $ = load((await got_default({ method: "get", url: currentUrl })).data); let items = $(".com-blog-part .box a").toArray().map((item) => { item = $(item); return { title: item.text(), author: item.find(".name").text(), link: `${rootUrl}${item.attr("href").split("?")[0]}` }; }); items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => { const content = load((await got_default({ method: "get", url: item.link })).data); item.description = content(".box-article").html(); item.pubDate = timezone(parseDate(content(".blog-foot .date").text()), 9); return item; }))); return { title: `${$("title").text()}${id ? ` - ${$(".name").first().text()}` : ""}`, link: currentUrl, item: items }; } //#endregion export { route };