UNPKG

rsshub

Version:
68 lines (66 loc) 2.7 kB
import { n as init_esm_shims, t as __dirname } from "./esm-shims-CzJ_djXG.mjs"; import "./config-C37vj7VH.mjs"; import "./dist-BInvbO1W.mjs"; import "./logger-Czu8UMNd.mjs"; import "./ofetch-BIyrKU3Y.mjs"; import "./helpers-DxBp0Pty.mjs"; import { t as art } from "./render-BQo6B4tL.mjs"; import { t as got_default } from "./got-KxxWdaxq.mjs"; import path from "node:path"; import { load } from "cheerio"; //#region lib/routes/sciencedirect/call-for-paper.ts init_esm_shims(); const route = { path: "/call-for-paper/:subject", categories: ["journal"], example: "/sciencedirect/call-for-paper/education", parameters: { subject: "学科分类,例如“education”" }, radar: [{ source: ["sciencedirect.com"] }], name: "Call for Papers", maintainers: ["etShaw-zh"], handler, url: "sciencedirect.com/browse/calls-for-papers", description: "`sciencedirect.com/browse/calls-for-papers?subject=education` -> `/sciencedirect/call-for-paper/education`" }; async function handler(ctx) { const { subject = "" } = ctx.req.param(); const apiUrl = `https://www.sciencedirect.com/browse/calls-for-papers?subject=${subject}`; const scriptJSON = load((await got_default(apiUrl, { headers: { accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" } })).body)("script[data-iso-key=\"_0\"]").text(); if (!scriptJSON) throw new Error("Cannot find the script with data-iso-key=\"_0\""); let data; try { data = JSON.parse(JSON.parse(scriptJSON)); } catch (error) { throw new Error(`Failed to parse embedded script JSON: ${error.message}`); } const cfpList = data?.callsForPapers?.list || []; if (!cfpList.length) throw new Error("No Calls for Papers found"); const items = cfpList.map((cfp) => { const link = `https://www.sciencedirect.com/special-issue/${cfp.contentId}/${cfp.url}`; const description = art(path.join(__dirname, "templates/description-7826a6be.art"), { summary: cfp.summary, submissionDeadline: cfp.submissionDeadline, displayName: cfp.journal.displayName, impactFactor: cfp.journal.impactFactor, citeScore: cfp.journal.citeScore }); return { title: cfp.title, author: `${cfp.journal.displayName} (IF: ${cfp.journal.impactFactor})`, link, description, pubDate: cfp.submissionDeadline || "" }; }); return { title: `ScienceDirect Calls for Papers - ${subject}`, link: apiUrl, description: `Calls for Papers on ScienceDirect for subject: ${subject}`, item: items }; } //#endregion export { route };