rsshub
Version:
Make RSS Great Again!
92 lines (89 loc) • 3.63 kB
JavaScript
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 };