UNPKG

rsshub

Version:
103 lines (101 loc) 3.1 kB
import "./dist-Bog6z_OM.mjs"; import "./config-MQ-7ebJ_.mjs"; import { t as ViewType } from "./types-gOySfSXJ.mjs"; import "./logger-C4avouvV.mjs"; import "./ofetch-DKl_Ma9g.mjs"; import "./is-worker-DESPicPc.mjs"; import { t as cache_default } from "./cache-SV6W5EPy.mjs"; import "./helpers-Bo4JQYdN.mjs"; import { t as got_default } from "./got-CO-ndVl2.mjs"; import { Fragment, jsx, jsxs } from "hono/jsx/jsx-runtime"; import { load } from "cheerio"; import { renderToString } from "hono/jsx/dom/server"; //#region lib/routes/changba/user.tsx const headers = { "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1" }; const route = { path: "/:userid", categories: ["social-media"], view: ViewType.Audios, example: "/changba/skp6hhF59n48R-UpqO3izw", parameters: { userid: "用户ID, 可在对应分享页面的 URL 中找到" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: true, supportScihub: false }, radar: [{ source: ["changba.com/s/:userid"] }], name: "用户", maintainers: [ "kt286", "xizeyoupan", "pseudoyu" ], handler }; async function handler(ctx) { const url = `https://changba.com/wap/index.php?s=${ctx.req.param("userid")}`; const data = (await got_default({ method: "get", url, headers })).data; const $ = load(data); const list = $(".user-work .work-info").toArray(); const author = $("div.user-main-info > span.txt-info > a.uname").text(); const authorimg = $("div.user-main-info > .poster > img").attr("data-src"); let items = await Promise.all(list.map((item) => { const $ = load(item); const link = $("a").attr("href"); return cache_default.tryGet(link, async () => { const result = await got_default({ method: "get", url: link, headers }); const re = /workid: '\d+'/; let workid; try { workid = result.data.match(re)[0]; } catch { return null; } workid = workid.split("'")[1]; if (!workid) return null; const mp3 = `https://upscuw.changba.com/${workid}.mp3`; const description = renderToString(/* @__PURE__ */ jsx(ChangbaWorkDescription, { desc: $("div.des").text(), mp3url: mp3 })); const itunes_item_image = $("div.work-cover").attr("style").replace(")", "").split("url(")[1]; return { title: $(".work-title").text(), description, link, author, itunes_item_image, enclosure_url: mp3, enclosure_type: "audio/mpeg" }; }); })); items = items.filter(Boolean); return { title: author + " - 唱吧", link: url, description: $("meta[name=\"description\"]").attr("content") || author + " - 唱吧", item: items, image: authorimg, itunes_author: author, itunes_category: "唱吧" }; } const ChangbaWorkDescription = ({ desc, mp3url }) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", { children: desc }), /* @__PURE__ */ jsx("audio", { id: "audio", src: mp3url, preload: "metadata" })] }); //#endregion export { route };