UNPKG

rsshub

Version:
62 lines (61 loc) 2.71 kB
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs"; import { t as config } from "./config-CCmw1BNE.mjs"; import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs"; import { t as cache_default } from "./cache-BkqOokyU.mjs"; import { load } from "cheerio"; import sanitizeHtml from "sanitize-html"; //#region lib/routes/sciencedirect/current-issue.ts const route = { path: "/journal/:id/current", categories: ["journal"], example: "/sciencedirect/journal/journal-of-financial-economics/current", parameters: { id: "Journal id, can be found in URL" }, features: { requireConfig: false, requirePuppeteer: false, antiCrawler: false, supportBT: false, supportPodcast: false, supportScihub: false }, radar: [{ source: ["sciencedirect.com/journal/:id", "sciencedirect.com/"] }], name: "Current Issue", maintainers: ["TonyRL"], handler }; async function handler(ctx) { const id = ctx.req.param("id"); const baseUrl = "https://www.sciencedirect.com"; const currentUrl = `${baseUrl}/journal/${id}`; const $page = load(await rofetch(currentUrl, { headers: { "User-Agent": config.trueUA } })); const issueUrl = `${currentUrl}${JSON.parse(JSON.parse($page("script[type=\"application/json\"]").text())).latestIssues.issues[0].uriLookup}`; const $issue = load(await rofetch(issueUrl, { headers: { "User-Agent": config.trueUA } })); const issueData = JSON.parse(JSON.parse($issue("script[type=\"application/json\"]").text())); const titleMetadata = issueData.titleMetadata; const currentIssue = issueData.articles.ihp.data; const list = currentIssue.issueBody.issueSec.flatMap((section) => section.includeItem.map((item) => ({ title: item.title, link: `${baseUrl}${item.href}`, author: item.authors.map((author) => `${author.givenName} ${author.surname}`).join(", "), doi: item.doi, pubDate: parseDate(item.coverDateStart), pii: item.pii }))); const items = await Promise.all(list.map((item) => cache_default.tryGet(item.link, async () => { const abstracts = (await rofetch(`https://www.sciencedirect.com/journal/0304405X/abstract?pii=${item.pii}`, { headers: { "User-Agent": config.trueUA } })).data?.[0]?.abstracts ?? []; item.description = abstracts.length === 0 ? "" : abstracts.map((abs) => abs?.html ?? "").filter(Boolean).join("<br/><br/>"); return item; }))); return { title: `${titleMetadata.displayName} | ${currentIssue.volIssueSupplementText}, (${currentIssue.coverDateText}) | ScienceDirect.com by Elsevier`, description: sanitizeHtml(titleMetadata.aimsAndScopeV2, { allowedTags: [], allowedAttributes: {} }), image: titleMetadata.largeCoverUrl ?? titleMetadata.smallCoverUrl, link: issueUrl, item: items }; } //#endregion export { route };