rsshub
Version:
Make RSS Great Again!
89 lines (88 loc) • 2.57 kB
JavaScript
import { t as parseDate } from "./parse-date-CjhZE69i.mjs";
import { t as cache_default } from "./cache-CiDoUSLo.mjs";
import { t as got_default } from "./got-BDnf4rdT.mjs";
import { t as timezone } from "./timezone-DE--ze1V.mjs";
import { Fragment, jsx, jsxs } from "hono/jsx/jsx-runtime";
import { load } from "cheerio";
import { renderToString } from "hono/jsx/dom/server";
import { raw } from "hono/html";
//#region lib/routes/shuiguopai/index.tsx
const route = {
path: "/",
categories: ["new-media"],
example: "/shuiguopai",
radar: [{
source: ["shuiguopai.com/"],
target: ""
}],
name: "首页",
maintainers: ["nczitzk"],
handler,
url: "shuiguopai.com/",
features: { nsfw: true }
};
async function handler(ctx) {
const rootUrl = "https://sgptv.vip";
const apiRootUrl = "https://api.cbbee0.com";
const listUrl = `${apiRootUrl}/v1_2/homePage`;
const filmUrl = `${apiRootUrl}/v1_2/filmInfo`;
let items = (await got_default({
method: "post",
url: listUrl,
json: {
device_id: "",
hm: "008-api",
last_page: 0,
length: ctx.req.query("limit") ? Number.parseInt(ctx.req.query("limit")) : 50,
ltype: 1,
page: 1,
userToken: ""
}
})).data.data.list.map((item) => ({
title: item.title,
guid: item.library_id,
link: `${rootUrl}/play-details/${item.library_id}`,
pubDate: timezone(parseDate(item.show_time_origin, "YYYY-MM-DD HH:mm:ss"), 8),
category: item.tags.map((t) => t.tag_title)
}));
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
const detailResponse = await got_default({
method: "get",
url: item.link
});
const content = load(detailResponse.data);
content("iframe").remove();
let videos;
const filmId = detailResponse.data.match(/film_id:"([\d,]+)",/)?.[1];
if (filmId) {
const data = (await got_default({
method: "post",
url: filmUrl,
json: {
device_id: "",
film_id: filmId,
hm: "008-api",
userToken: ""
}
})).data.data;
videos = data.map((d) => d.download_url);
item.category = data.flatMap((d) => d.tags.map((t) => t.tag_title));
item.author = data.map((d) => d.actor).join(" ");
}
item.description = renderToString(/* @__PURE__ */ jsxs(Fragment, { children: [videos?.map((video) => /* @__PURE__ */ jsx("video", {
controls: true,
children: /* @__PURE__ */ jsx("source", {
src: video,
type: "video/mp4"
})
})), raw(content(".content").html())] }));
return item;
})));
return {
title: "水果派",
link: rootUrl,
item: items
};
}
//#endregion
export { route };