UNPKG

rsshub

Version:
66 lines (64 loc) 2.84 kB
import "./dist-Bog6z_OM.mjs"; import { t as config } from "./config-MQ-7ebJ_.mjs"; import "./logger-C4avouvV.mjs"; import { t as ofetch_default } from "./ofetch-DKl_Ma9g.mjs"; import { t as parseDate } from "./parse-date-r5WDWHno.mjs"; import "./is-worker-DESPicPc.mjs"; import { t as cache_default } from "./cache-SV6W5EPy.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 ofetch_default(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 ofetch_default(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 ofetch_default(`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 };