rsshub
Version:
Make RSS Great Again!
168 lines (165 loc) • 7.82 kB
JavaScript
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as cache_default } from "./cache-BkqOokyU.mjs";
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/lrepacks/templates/description.tsx
const renderDescription = ({ images, intro, description }) => renderToString(/* @__PURE__ */ jsxs(Fragment, { children: [
images?.map((image) => image?.src ? /* @__PURE__ */ jsx("figure", { children: /* @__PURE__ */ jsx("img", {
src: image.src,
alt: image.alt ?? void 0
}) }) : null),
intro ? /* @__PURE__ */ jsx("blockquote", { children: intro }) : null,
description ? /* @__PURE__ */ jsx(Fragment, { children: raw(description) }) : null
] }));
//#endregion
//#region lib/routes/lrepacks/index.ts
const handler = async (ctx) => {
const { category = "" } = ctx.req.param();
const limit = ctx.req.query("limit") ? Number(ctx.req.query("limit")) : 12;
const rootUrl = "https://lrepacks.net";
const currentUrl = new URL(category, rootUrl).href;
const { data: response } = await got_default(currentUrl);
const $ = load(response);
const language = $("html").prop("lang");
let items = $("#main article").slice(0, limit).toArray().map((item) => {
const $item = $(item);
return {
title: $item.find("h3.entry-title").text(),
description: renderDescription({ intro: $item.find("div.entry-content").text() }),
link: $item.find("h3.entry-title a").prop("href"),
category: $item.find("span.cat-links").toArray().map((c) => $(c).text()),
language
};
});
items = await Promise.all(items.map((item) => cache_default.tryGet(item.link, async () => {
const { data: detailResponse } = await got_default(item.link);
const $$ = load(detailResponse);
const data = JSON.parse($$("script[type=\"application/ld+json\"]").first().text())["@graph"]?.[0] ?? void 0;
$$("div.entry-content a.highslide[href]").each((_, el) => {
const $el = $$(el);
$el.parent().replaceWith(renderDescription({ images: [{
src: $el.prop("href"),
alt: $el.prop("title")
}] }));
});
const title = $$("h2.entry-title").text();
const description = item.description + renderDescription({ description: $$("div.entry-content").html() ?? void 0 });
const image = $$("meta[property=\"og:image\"]").prop("content");
item.title = title;
item.description = description;
item.pubDate = data ? parseDate(data.datePublished) : void 0;
item.author = data?.author?.name ?? void 0;
item.content = {
html: description,
text: $$("div.entry-content").text()
};
item.image = image;
item.banner = image;
item.updated = data ? parseDate(data.dateModified) : void 0;
item.language = language;
return item;
})));
const image = new URL($("div.logo img").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: "REPACK скачать",
url: "lrepacks.net",
maintainers: ["nczitzk"],
handler,
example: "/lrepacks",
parameters: { category: "Category, Homepage by default" },
description: `::: tip
If you subscribe to [Системные программы](https://lrepacks.net/repaki-sistemnyh-programm/),where the URL is \`https://lrepacks.net/repaki-sistemnyh-programm/\`, extract the part \`https://lrepacks.net/\` to the end, which is \`repaki-sistemnyh-programm\`, and use it as the parameter to fill in. Therefore, the route will be [\`/lrepacks/repaki-sistemnyh-programm\`](https://rsshub.app/lrepacks/repaki-sistemnyh-programm).
| Category | ID |
| ------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| [Новые репаки на сегодня](https://lrepacks.net/novye-repaki-elchupacabra/) | [novye-repaki-elchupacabra](https://rsshub.app/lrepacks/novye-repaki-elchupacabra) |
| [Системные программы](https://lrepacks.net/repaki-sistemnyh-programm/) | [repaki-sistemnyh-programm](https://rsshub.app/lrepacks/repaki-sistemnyh-programm) |
| [Программы для графики](https://lrepacks.net/repaki-programm-dlya-grafiki/) | [repaki-programm-dlya-grafiki](https://rsshub.app/lrepacks/repaki-programm-dlya-grafiki) |
| [Программы для интернета](https://lrepacks.net/repaki-programm-dlya-interneta/) | [repaki-programm-dlya-interneta](https://rsshub.app/lrepacks/repaki-programm-dlya-interneta) |
| [Мультимедиа программы](https://lrepacks.net/repaki-multimedia-programm/) | [repaki-multimedia-programm](https://rsshub.app/lrepacks/repaki-multimedia-programm) |
| [Программы для офиса](https://lrepacks.net/repaki-programm-dlya-ofisa/) | [repaki-programm-dlya-ofisa](https://rsshub.app/lrepacks/repaki-programm-dlya-ofisa) |
| [Разные программы](https://lrepacks.net/repaki-raznyh-programm/) | [repaki-raznyh-programm](https://rsshub.app/lrepacks/repaki-raznyh-programm) |
| [Системные библиотеки](https://lrepacks.net/sistemnye-biblioteki/) | [sistemnye-biblioteki](https://rsshub.app/lrepacks/sistemnye-biblioteki) |
| [Важная информация](https://lrepacks.net/informaciya/) | [informaciya](https://rsshub.app/lrepacks/informaciya) |
:::`,
categories: ["program-update"],
features: {
requireConfig: false,
requirePuppeteer: false,
antiCrawler: false,
supportRadar: true,
supportBT: false,
supportPodcast: false,
supportScihub: false
},
radar: [
{
source: ["lrepacks.net/:category"],
target: (params) => {
const category = params.category;
return `/lrepacks${category ? `/${category}` : ""}`;
}
},
{
title: "Новые репаки на сегодня",
source: ["lrepacks.net/novye-repaki-elchupacabra/"],
target: "/novye-repaki-elchupacabra"
},
{
title: "Системные программы",
source: ["lrepacks.net/repaki-sistemnyh-programm/"],
target: "/repaki-sistemnyh-programm"
},
{
title: "Программы для графики",
source: ["lrepacks.net/repaki-programm-dlya-grafiki/"],
target: "/repaki-programm-dlya-grafiki"
},
{
title: "Программы для интернета",
source: ["lrepacks.net/repaki-programm-dlya-interneta/"],
target: "/repaki-programm-dlya-interneta"
},
{
title: "Мультимедиа программы",
source: ["lrepacks.net/repaki-multimedia-programm/"],
target: "/repaki-multimedia-programm"
},
{
title: "Программы для офиса",
source: ["lrepacks.net/repaki-programm-dlya-ofisa/"],
target: "/repaki-programm-dlya-ofisa"
},
{
title: "Разные программы",
source: ["lrepacks.net/repaki-raznyh-programm/"],
target: "/repaki-raznyh-programm"
},
{
title: "Системные библиотеки",
source: ["lrepacks.net/sistemnye-biblioteki/"],
target: "/sistemnye-biblioteki"
},
{
title: "Важная информация",
source: ["lrepacks.net/informaciya/"],
target: "/informaciya"
}
]
};
//#endregion
export { handler, route };