UNPKG

rsshub

Version:
39 lines (37 loc) 1.27 kB
import { t as rofetch } from "./ofetch-W1aeTHCo.mjs"; import { t as parseDate } from "./parse-date-CjhZE69i.mjs"; import { load } from "cheerio"; //#region lib/routes/arxiv/query.ts const route = { path: "/:query", categories: ["journal"], example: "/arxiv/search_query=all:electron&start=0&max_results=10", parameters: { query: "query statement" }, description: `See [arXiv API User Manual](https://arxiv.org/help/api/user-manual) to find out all query statements. Fill in parameter \`query\` with content after \`https://export.arxiv.org/api/query?\`.`, name: "Search Keyword", maintainers: ["nczitzk"], features: { antiCrawler: true }, handler }; async function handler(ctx) { const { query } = ctx.req.param(); const currentUrl = `https://export.arxiv.org/api/query?${query}`; const $ = load(await rofetch(currentUrl, { responseType: "text" })); const list = $("entry").toArray().map((item) => { const $item = $(item); return { title: $item.find("title").text(), link: $item.find("link[type=\"text/html\"]").attr("href"), pubDate: parseDate($item.find("published").text()), description: $item.find("summary").text() }; }); return { title: `arXiv (${query})`, link: currentUrl, item: list }; } //#endregion export { route };