UNPKG

rsshub

Version:
86 lines (84 loc) 3.38 kB
import "./config-C37vj7VH.mjs"; import { t as logger_default } from "./logger-Czu8UMNd.mjs"; import { t as parseDate } from "./parse-date-BrP7mxXf.mjs"; import { t as cache_default } from "./cache-Bo__VnGm.mjs"; import "./proxy-Db7uGcYb.mjs"; import { n as puppeteer_default } from "./puppeteer-DGmvuGvT.mjs"; import { n as setCookies, t as getCookies } from "./puppeteer-utils-BK3JC9qW.mjs"; import { load } from "cheerio"; //#region lib/routes/uchicago/current.ts const route = { path: "/journals/current/:journal", categories: ["journal"], example: "/uchicago/journals/current/jpe", parameters: { journal: "Journal id, can be found in URL. [Browse journals by title](https://www.journals.uchicago.edu/action/showPublications)" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: true, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["journals.uchicago.edu/toc/:journal/current", "journals.uchicago.edu/journal/:journal"] }], name: "Current Issue", maintainers: ["TonyRL"], handler }; async function handler(ctx) { const journal = ctx.req.param("journal"); const baseUrl = "https://www.journals.uchicago.edu"; const link = `${baseUrl}/toc/${journal}/current`; const browser = await puppeteer_default(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on("request", (request) => { request.resourceType() === "document" ? request.continue() : request.abort(); }); logger_default.http(`Requesting ${link}`); await page.goto(link, { waitUntil: "domcontentloaded" }); const response = await page.evaluate(() => document.documentElement.innerHTML); const cookies = await getCookies(page); await page.close(); const $ = load(response); const list = $(".issue-item__title").toArray().map((item) => ({ link: `${baseUrl}${$(item).find("a").attr("href")}` })); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const page$1 = await browser.newPage(); await setCookies(page$1, cookies, "journals.uchicago.edu"); await page$1.setRequestInterception(true); page$1.on("request", (request) => { request.resourceType() === "document" ? request.continue() : request.abort(); }); logger_default.http(`Requesting ${item.link}`); await page$1.goto(item.link, { waitUntil: "domcontentloaded", referer: link }); const response$1 = await page$1.evaluate(() => document.documentElement.innerHTML); await page$1.close(); const $$1 = load(response$1); item.title = $$1("head title").text(); item.pubDate = parseDate($$1("head meta[name=\"dc.Date\"]").attr("content")); item.doi = $$1("head meta[scheme=\"doi\"]").attr("content"); item.author = $$1(".author-name span").toArray().map((author) => $$1(author).text()).join(", "); $$1(".figure__image").each((_, elem) => { if (elem.attribs["data-lg-src"]) { $$1(elem).attr("src", `${baseUrl}${elem.attribs["data-lg-src"]}`); delete elem.attribs["data-lg-src"]; } }); item.description = $$1(".article__body").html(); return item; }))); await browser.close(); return { title: $("head title").text(), description: $(".jumbotron-journal-info").text(), link, image: $("head meta[property=\"og:image\"]").attr("content"), item: items, language: $("html").attr("lang") }; } //#endregion export { route };