UNPKG

rsshub

Version:
92 lines (89 loc) 3.63 kB
import { t as got_default } from "./got-BTowW50G.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/1x/index.tsx const handler = async (ctx) => { const { category = "latest/awarded" } = ctx.req.param(); const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 30; const rootUrl = "https://1x.com"; const currentUrl = new URL(`gallery/${category}`, rootUrl).href; const { data: currentResponse } = await got_default(currentUrl); const $ = load(currentResponse); const language = $("html").prop("lang"); const apiUrl = new URL(`backend/lm2.php?style=normal&mode=${$("input#lm_mode").prop("value")}`, rootUrl).href; const { data: response } = await got_default(apiUrl); const items = load(response)("div.photos-feed-item").slice(0, limit).toArray().map((item) => { const $item = $(item); const title = $item.find("span.photos-feed-data-title").first().text() || "Untitled"; const image = $item.find("img").prop("src"); const author = $item.find("span.photos-feed-data-name").first().text(); const text = `${title} by ${author}`; const description = renderToString(/* @__PURE__ */ jsxs(Fragment, { children: [image ? /* @__PURE__ */ jsx("figure", { children: /* @__PURE__ */ jsx("img", { src: image, alt: title }) }) : null, text ? /* @__PURE__ */ jsx(Fragment, { children: raw(text) }) : null] })); const id = $item.find("img[id]").prop("id").split(/-/).pop(); const guid = `1x-${id}`; return { title, description, link: new URL(`photo/${id}`, rootUrl).href, author, guid, id: guid, content: { html: description, text }, image, banner: image, language, enclosure_url: image, enclosure_type: image ? `image/${image.split(/\./).pop()}` : void 0, enclosure_title: title }; }); const image = new URL($("img.themedlogo").prop("src"), rootUrl).href; return { title: $("title").text(), description: $("meta[name=\"description\"]").prop("content"), link: currentUrl, item: items, allowEmpty: true, image, author: $("meta[property=\"og:site_name\"]").prop("content"), language }; }; const route = { path: "/:category{.+}?", name: "Gallery", url: "1x.com", maintainers: ["nczitzk"], handler, example: "/1x/latest/awarded", parameters: { category: "Category, Latest Awarded by default" }, description: `::: tip Fill in the field in the path with the part of the corresponding page URL after \`https://1x.com/gallery/\` or \`https://1x.com/photo/\`. Here are the examples: If you subscribe to [Abstract Awarded](https://1x.com/gallery/abstract/awarded), you should fill in the path with the part \`abstract/awarded\` from the page URL \`https://1x.com/gallery/abstract/awarded\`. In this case, the route will be [\`/1x/abstract/awarded\`](https://rsshub.app/1x/abstract/awarded). If you subscribe to [Wildlife Published](https://1x.com/gallery/wildlife/published), you should fill in the path with the part \`wildlife/published\` from the page URL \`https://1x.com/gallery/wildlife/published\`. In this case, the route will be [\`/1x/wildlife/published\`](https://rsshub.app/1x/wildlife/published). :::`, categories: ["design", "picture"], features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportRadar: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["/gallery/:category*", "/photos/:category*"], target: "/1x/:category" }] }; //#endregion export { handler, route };