UNPKG

rsshub

Version:
73 lines (72 loc) 2.24 kB
import { t as config } from "./config-CCmw1BNE.mjs"; import { t as logger } from "./logger-BKy98Y8B.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { n as outPlaywright } from "./playwright-o20DiLNh.mjs"; import { Fragment, jsx } from "hono/jsx/jsx-runtime"; import { load } from "cheerio"; import { renderToString } from "hono/jsx/dom/server"; //#region lib/routes/spankbang/new-videos.tsx const render = ({ preview, cover }) => renderToString(/* @__PURE__ */ jsx(Fragment, { children: preview ? /* @__PURE__ */ jsx("video", { controls: true, preload: "metadata", poster: cover, children: /* @__PURE__ */ jsx("source", { src: preview, type: "video/mp4" }) }) : null })); const handler = async () => { const baseUrl = "https://spankbang.com"; const link = `${baseUrl}/new_videos/`; const context = await outPlaywright(); const data = await cache_default.tryGet(link, async () => { const page = await context.newPage(); await page.route("**/*", (route) => { route.request().resourceType() === "document" ? route.continue() : route.abort(); }); logger.http(`Requesting ${link}`); await page.goto(link, { waitUntil: "domcontentloaded" }); const $ = load(await page.content()); const items = $(".video-item").toArray().map((item) => { const $item = $(item); const thumb = $item.find(".thumb"); const cover = $item.find("img.cover"); return { title: thumb.attr("title"), link: new URL(thumb.attr("href"), baseUrl).href, description: render({ cover: cover.data("src"), preview: cover.data("preview") }) }; }); return { title: $("head title").text(), description: $("head meta[name=\"description\"]").attr("content"), item: items }; }, config.cache.routeExpire, false); await context.close(); return { title: data.title, description: data.description, link, item: data.item }; }; const route = { path: "/new_videos", categories: ["multimedia"], example: "/spankbang/new_videos", name: "New Porn Videos", maintainers: ["TonyRL"], features: { antiCrawler: true, requirePuppeteer: true, nsfw: true }, radar: [{ source: ["spankbang.com/new_videos/", "spankbang.com/"] }], handler }; //#endregion export { route };