rsshub
Version:
Make RSS Great Again!
1,046 lines (1,045 loc) • 20.2 kB
JavaScript
import { t as rofetch } from "./ofetch-C3ts-Hud.mjs";
import { t as parseDate } from "./parse-date-Cr0wQjV_.mjs";
import { t as cache_default } from "./cache-BkqOokyU.mjs";
import { load } from "cheerio";
import { CookieJar } from "tough-cookie";
//#region lib/routes/nature/utils.ts
const baseUrl = "https://www.nature.com";
const fixFigure = (html) => {
html("picture source").each((_, i) => {
const $i = html(i);
if ($i.attr("srcset") && ($i.attr("srcset").startsWith("//media.springernature.com/lw685/") || $i.attr("srcset").startsWith("//media.springernature.com/m312/") || $i.attr("srcset").startsWith("//media.springernature.com/relative-r300-703_m1050/") || $i.attr("srcset").startsWith("//media.springernature.com/w300/"))) {
$i.attr("srcset", $i.attr("srcset").replace("//media.springernature.com/lw685/", "//media.springernature.com/full/"));
$i.attr("srcset", $i.attr("srcset").replace("//media.springernature.com/m312/", "//media.springernature.com/full/"));
$i.attr("srcset", $i.attr("srcset").replace("//media.springernature.com/relative-r300-703_m1050/", "//media.springernature.com/full/"));
$i.attr("srcset", $i.attr("srcset").replace("//media.springernature.com/w300/", "//media.springernature.com/full/"));
}
});
html("img").each((_, i) => {
const $i = html(i);
if ($i.attr("src") && ($i.attr("src").startsWith("//media.springernature.com/lw685/") || $i.attr("src").startsWith("//media.springernature.com/m312/") || $i.attr("src").startsWith("//media.springernature.com/relative-r300-703_m1050/") || $i.attr("src").startsWith("//media.springernature.com/w300/"))) {
$i.attr("src", $i.attr("src").replace("//media.springernature.com/lw685/", "//media.springernature.com/full/"));
$i.attr("src", $i.attr("src").replace("//media.springernature.com/m312/", "//media.springernature.com/full/"));
$i.attr("src", $i.attr("src").replace("//media.springernature.com/relative-r300-703_m1050/", "//media.springernature.com/full/"));
$i.attr("src", $i.attr("src").replace("//media.springernature.com/w300/", "//media.springernature.com/full/"));
}
});
};
const getArticleList = (html) => html(".app-article-list-row__item").toArray().map((item) => {
const $item = html(item);
return {
title: $item.find("a").text(),
link: baseUrl + $item.find("a").attr("href"),
pubDate: parseDate($item.find(".c-meta time").attr("datetime"), "YYYY-MM-DD")
};
});
const getArticle = (item) => cache_default.tryGet(item.link, async () => {
const $ = load(await rofetch(item.link));
if (new URL(item.link).pathname.startsWith("/immersive/")) {
const meta = getDataLayer($);
item.doi = meta.content.article?.doi;
item.author = meta.content.contentInfo.authors.join(", ");
item.pubDate = parseDate(meta.content.contentInfo.publishedAt, "X") || item.pubDate;
} else {
const meta = JSON.parse($("script[type=\"application/ld+json\"]").html() ?? "");
const freeAccess = meta.mainEntity.isAccessibleForFree;
let description;
if (meta.mainEntity.sameAs.startsWith("https://doi.org/")) item.doi = meta.mainEntity.sameAs.replace("https://doi.org/", "");
item.author = meta.mainEntity.author.map((author) => author.name.replace(", ", " ")).join(", ");
item.category = meta.mainEntity.keywords;
item.pubDate = parseDate(meta.mainEntity.datePublished) || item.pubDate;
fixFigure($);
$("section[data-recommended=jobs], span[data-recommended=jobs]").remove();
$("#further-reading-section").remove();
$("figure div.u-text-right.u-hide-print").remove();
if (freeAccess) description = $(".c-article-body").html();
else {
$("div.c-article-access-provider, h2#access-options, div[data-component=entitlement-box],div[class^=LiveAreaSection-], nav.c-access-options").remove();
description = $(".c-article-body").html() || ($(".c-article-teaser-text").html() ?? "") + ($("div.u-clear-both.c-article-wide-figure").html() ?? "") + $(".article__teaser").html() + ($(".c-article-references__container").html() ?? "");
}
if ($("div.c-pdf-download").length) description += `<a href="${$("div.c-pdf-download a").attr("href")}">Download PDF</a>`;
item.description = description;
}
return item;
});
const getDataLayer = (html) => JSON.parse(html("script[data-test=dataLayer]").text().match(/window\.dataLayer = \[(.*)\];/s)[1]);
const cookieJar = new CookieJar();
/**
* This is generated by /nature/siteindex.debug.json
*/
const journalMap = { items: [
{
title: "aps",
name: "Acta Pharmacologica Sinica",
id: "41401",
description: "41401"
},
{
title: "bdjinpractice",
name: "BDJ In Practice",
id: "41404",
description: "41404"
},
{
title: "bdjopen",
name: "BDJ Open"
},
{
title: "bdjstudent",
name: "BDJ Student",
id: "41406",
description: "41406"
},
{
title: "bdjteam",
name: "BDJ Team",
id: "41407",
description: "41407"
},
{
title: "biopharmdeal",
name: "Biopharma Dealmakers",
id: "43747",
description: "43747"
},
{
title: "bjcreports",
name: "BJC Reports"
},
{
title: "bcj",
name: "Blood Cancer Journal"
},
{
title: "bmt",
name: "Bone Marrow Transplantation",
id: "41409",
description: "41409"
},
{
title: "boneres",
name: "Bone Research"
},
{
title: "bdj",
name: "British Dental Journal",
id: "41415",
description: "41415"
},
{
title: "bjc",
name: "British Journal of Cancer",
id: "41416",
description: "41416"
},
{
title: "cgt",
name: "Cancer Gene Therapy",
id: "41417",
description: "41417"
},
{
title: "cdd",
name: "Cell Death & Differentiation",
id: "41418",
description: "41418"
},
{
title: "cddis",
name: "Cell Death & Disease"
},
{
title: "cddiscovery",
name: "Cell Death Discovery"
},
{
title: "celldisc",
name: "Cell Discovery"
},
{
title: "cr",
name: "Cell Research",
id: "41422",
description: "41422"
},
{
title: "cmi",
name: "Cellular & Molecular Immunology",
id: "41423",
description: "41423"
},
{
title: "commsbio",
name: "Communications Biology"
},
{
title: "commschem",
name: "Communications Chemistry"
},
{
title: "commsenv",
name: "Communications Earth & Environment"
},
{
title: "commseng",
name: "Communications Engineering"
},
{
title: "commsmat",
name: "Communications Materials"
},
{
title: "commsmed",
name: "Communications Medicine"
},
{
title: "commsphys",
name: "Communications Physics"
},
{
title: "commspsychol",
name: "Communications Psychology"
},
{
title: "ejcn",
name: "European Journal of Clinical Nutrition",
id: "41430",
description: "41430"
},
{
title: "ejhg",
name: "European Journal of Human Genetics",
id: "41431",
description: "41431"
},
{
title: "ebd",
name: "Evidence-Based Dentistry",
id: "41432",
description: "41432"
},
{
title: "emm",
name: "Experimental & Molecular Medicine",
id: "12276",
description: "12276"
},
{
title: "eye",
name: "Eye",
id: "41433",
description: "41433"
},
{
title: "gt",
name: "Gene Therapy",
id: "41434",
description: "41434"
},
{
title: "gene",
name: "Genes & Immunity",
id: "41435",
description: "41435"
},
{
title: "hdy",
name: "Heredity",
id: "41437",
description: "41437"
},
{
title: "hgv",
name: "Human Genome Variation"
},
{
title: "palcomms",
name: "Humanities and Social Sciences Communications"
},
{
title: "hr",
name: "Hypertension Research",
id: "41440",
description: "41440"
},
{
title: "ijir",
name: "International Journal of Impotence Research",
id: "41443",
description: "41443"
},
{
title: "ijo",
name: "International Journal of Obesity",
id: "41366",
description: "41366"
},
{
title: "ijosup",
name: "International Journal of Obesity Supplements",
id: "41367",
description: "41367"
},
{
title: "ijos",
name: "International Journal of Oral Science"
},
{
title: "ismecomms",
name: "ISME Communications"
},
{
title: "ismej",
name: "The ISME Journal",
id: "41396",
description: "41396"
},
{
title: "ja",
name: "The Journal of Antibiotics",
id: "41429",
description: "41429"
},
{
title: "jes",
name: "Journal of Exposure Science & Environmental Epidemiology",
id: "41370",
description: "41370"
},
{
title: "jhg",
name: "Journal of Human Genetics",
id: "10038",
description: "10038"
},
{
title: "jhh",
name: "Journal of Human Hypertension",
id: "41371",
description: "41371"
},
{
title: "jp",
name: "Journal of Perinatology",
id: "41372",
description: "41372"
},
{
title: "laban",
name: "Lab Animal",
id: "41684",
description: "41684"
},
{
title: "labinvest",
name: "Laboratory Investigation",
id: "41374",
description: "41374"
},
{
title: "leu",
name: "Leukemia",
id: "41375",
description: "41375"
},
{
title: "leusup",
name: "Leukemia Supplements",
id: "41376",
description: "41376"
},
{
title: "lsa",
name: "Light: Science & Applications"
},
{
title: "micronano",
name: "Microsystems & Nanoengineering"
},
{
title: "modpathol",
name: "Modern Pathology",
id: "41379",
description: "41379"
},
{
title: "mp",
name: "Molecular Psychiatry",
id: "41380",
description: "41380"
},
{
title: "mi",
name: "Mucosal Immunology",
id: "41385",
description: "41385"
},
{
title: "nature",
name: "Nature"
},
{
title: "natafrica",
name: "Nature Africa"
},
{
title: "nataging",
name: "Nature Aging",
id: "43587",
description: "43587"
},
{
title: "natastron",
name: "Nature Astronomy",
id: "41550",
description: "41550"
},
{
title: "natbiomedeng",
name: "Nature Biomedical Engineering",
id: "41551",
description: "41551"
},
{
title: "nbt",
name: "Nature Biotechnology",
id: "41587",
description: "41587"
},
{
title: "natcancer",
name: "Nature Cancer",
id: "43018",
description: "43018"
},
{
title: "natcardiovascres",
name: "Nature Cardiovascular Research",
id: "44161",
description: "44161"
},
{
title: "natcatal",
name: "Nature Catalysis",
id: "41929",
description: "41929"
},
{
title: "ncb",
name: "Nature Cell Biology",
id: "41556",
description: "41556"
},
{
title: "nchembio",
name: "Nature Chemical Biology",
id: "41589",
description: "41589"
},
{
title: "natchemeng",
name: "Nature Chemical Engineering"
},
{
title: "nchem",
name: "Nature Chemistry",
id: "41557",
description: "41557"
},
{
title: "natcities",
name: "Nature Cities"
},
{
title: "nclimate",
name: "Nature Climate Change",
id: "41558",
description: "41558"
},
{
title: "ncomms",
name: "Nature Communications"
},
{
title: "natcomputsci",
name: "Nature Computational Science",
id: "43588",
description: "43588"
},
{
title: "ndigest",
name: "Nature Digest"
},
{
title: "natecolevol",
name: "Nature Ecology & Evolution",
id: "41559",
description: "41559"
},
{
title: "natelectron",
name: "Nature Electronics",
id: "41928",
description: "41928"
},
{
title: "nenergy",
name: "Nature Energy",
id: "41560",
description: "41560"
},
{
title: "natfood",
name: "Nature Food",
id: "43016",
description: "43016"
},
{
title: "ng",
name: "Nature Genetics",
id: "41588",
description: "41588"
},
{
title: "ngeo",
name: "Nature Geoscience",
id: "41561",
description: "41561"
},
{
title: "nathumbehav",
name: "Nature Human Behaviour",
id: "41562",
description: "41562"
},
{
title: "ni",
name: "Nature Immunology",
id: "41590",
description: "41590"
},
{
title: "natindia",
name: "Nature India"
},
{
title: "natitaly",
name: "Nature Italy"
},
{
title: "natmachintell",
name: "Nature Machine Intelligence",
id: "42256",
description: "42256"
},
{
title: "nmat",
name: "Nature Materials",
id: "41563",
description: "41563"
},
{
title: "nm",
name: "Nature Medicine",
id: "41591",
description: "41591"
},
{
title: "natmentalhealth",
name: "Nature Mental Health",
id: "44220",
description: "44220"
},
{
title: "natmetab",
name: "Nature Metabolism",
id: "42255",
description: "42255"
},
{
title: "nmeth",
name: "Nature Methods",
id: "41592",
description: "41592"
},
{
title: "nmicrobiol",
name: "Nature Microbiology",
id: "41564",
description: "41564"
},
{
title: "nnano",
name: "Nature Nanotechnology",
id: "41565",
description: "41565"
},
{
title: "neuro",
name: "Nature Neuroscience",
id: "41593",
description: "41593"
},
{
title: "nphoton",
name: "Nature Photonics",
id: "41566",
description: "41566"
},
{
title: "nphys",
name: "Nature Physics",
id: "41567",
description: "41567"
},
{
title: "nplants",
name: "Nature Plants",
id: "41477",
description: "41477"
},
{
title: "nprot",
name: "Nature Protocols",
id: "41596",
description: "41596"
},
{
title: "natrevbioeng",
name: "Nature Reviews Bioengineering",
id: "44222",
description: "44222"
},
{
title: "nrc",
name: "Nature Reviews Cancer",
id: "41568",
description: "41568"
},
{
title: "nrcardio",
name: "Nature Reviews Cardiology",
id: "41569",
description: "41569"
},
{
title: "natrevchem",
name: "Nature Reviews Chemistry",
id: "41570",
description: "41570"
},
{
title: "nrclinonc",
name: "Nature Reviews Clinical Oncology",
id: "41571",
description: "41571"
},
{
title: "nrdp",
name: "Nature Reviews Disease Primers"
},
{
title: "nrd",
name: "Nature Reviews Drug Discovery",
id: "41573",
description: "41573"
},
{
title: "natrevearthenviron",
name: "Nature Reviews Earth & Environment",
id: "43017",
description: "43017"
},
{
title: "natrevelectreng",
name: "Nature Reviews Electrical Engineering"
},
{
title: "nrendo",
name: "Nature Reviews Endocrinology",
id: "41574",
description: "41574"
},
{
title: "nrgastro",
name: "Nature Reviews Gastroenterology & Hepatology",
id: "41575",
description: "41575"
},
{
title: "nrg",
name: "Nature Reviews Genetics",
id: "41576",
description: "41576"
},
{
title: "nri",
name: "Nature Reviews Immunology",
id: "41577",
description: "41577"
},
{
title: "natrevmats",
name: "Nature Reviews Materials",
id: "41578",
description: "41578"
},
{
title: "nrmp",
name: "Nature Reviews Methods Primers"
},
{
title: "nrmicro",
name: "Nature Reviews Microbiology",
id: "41579",
description: "41579"
},
{
title: "nrm",
name: "Nature Reviews Molecular Cell Biology",
id: "41580",
description: "41580"
},
{
title: "nrneph",
name: "Nature Reviews Nephrology",
id: "41581",
description: "41581"
},
{
title: "nrneurol",
name: "Nature Reviews Neurology",
id: "41582",
description: "41582"
},
{
title: "nrn",
name: "Nature Reviews Neuroscience",
id: "41583",
description: "41583"
},
{
title: "natrevphys",
name: "Nature Reviews Physics",
id: "42254",
description: "42254"
},
{
title: "nrpsychol",
name: "Nature Reviews Psychology",
id: "44159",
description: "44159"
},
{
title: "nrrheum",
name: "Nature Reviews Rheumatology",
id: "41584",
description: "41584"
},
{
title: "nrurol",
name: "Nature Reviews Urology",
id: "41585",
description: "41585"
},
{
title: "nsmb",
name: "Nature Structural & Molecular Biology",
id: "41594",
description: "41594"
},
{
title: "natsustain",
name: "Nature Sustainability",
id: "41893",
description: "41893"
},
{
title: "natsynth",
name: "Nature Synthesis",
id: "44160",
description: "44160"
},
{
title: "natwater",
name: "Nature Water",
id: "44221",
description: "44221"
},
{
title: "npp",
name: "Neuropsychopharmacology",
id: "41386",
description: "41386"
},
{
title: "am",
name: "NPG Asia Materials"
},
{
title: "npj2dmaterials",
name: "npj 2D Materials and Applications"
},
{
title: "npjadvmanuf",
name: "npj Advanced Manufacturing"
},
{
title: "npjamd",
name: "npj Aging"
},
{
title: "npjamar",
name: "npj Antimicrobials and Resistance"
},
{
title: "npjbiodivers",
name: "npj Biodiversity"
},
{
title: "npjbiofilms",
name: "npj Biofilms and Microbiomes"
},
{
title: "npjbiolphysmech",
name: "npj Biological Physics and Mechanics"
},
{
title: "npjbts",
name: "npj Biological Timing and Sleep"
},
{
title: "npjbiosensing",
name: "npj Biosensing"
},
{
title: "npjbcancer",
name: "npj Breast Cancer"
},
{
title: "npjcardiohealth",
name: "npj Cardiovascular Health"
},
{
title: "npjcleanwater",
name: "npj Clean Water"
},
{
title: "npjclimataction",
name: "npj Climate Action"
},
{
title: "npjclimatsci",
name: "npj Climate and Atmospheric Science"
},
{
title: "npjcomplex",
name: "npj Complexity"
},
{
title: "npjcompumats",
name: "npj Computational Materials"
},
{
title: "npjdigitalmed",
name: "npj Digital Medicine"
},
{
title: "npjflexelectron",
name: "npj Flexible Electronics"
},
{
title: "npjgenmed",
name: "npj Genomic Medicine"
},
{
title: "npjimaging",
name: "npj Imaging"
},
{
title: "npjmatdeg",
name: "npj Materials Degradation"
},
{
title: "npjmatsustain",
name: "npj Materials Sustainability"
},
{
title: "npjmentalhealth",
name: "npj Mental Health Research"
},
{
title: "npjmetabhealth",
name: "npj Metabolic Health and Disease"
},
{
title: "npjmgrav",
name: "npj Microgravity"
},
{
title: "npjnanophoton",
name: "npj Nanophotonics"
},
{
title: "npjnathazards",
name: "npj Natural Hazards"
},
{
title: "npjoceansustain",
name: "npj Ocean Sustainability"
},
{
title: "npjparkd",
name: "npj Parkinson's Disease"
},
{
title: "npjprecisiononcology",
name: "npj Precision Oncology"
},
{
title: "npjpcrm",
name: "npj Primary Care Respiratory Medicine"
},
{
title: "npjqi",
name: "npj Quantum Information"
},
{
title: "npjquantmats",
name: "npj Quantum Materials"
},
{
title: "npjregenmed",
name: "npj Regenerative Medicine"
},
{
title: "npjrobot",
name: "npj Robotics"
},
{
title: "npjscifood",
name: "npj Science of Food"
},
{
title: "npjscilearn",
name: "npj Science of Learning"
},
{
title: "npjspintronics",
name: "npj Spintronics"
},
{
title: "npjsustainagric",
name: "npj Sustainable Agriculture"
},
{
title: "npjsustainmobil",
name: "npj Sustainable Mobility and Transport"
},
{
title: "npjsba",
name: "npj Systems Biology and Applications"
},
{
title: "npjunconvcomput",
name: "npj Unconventional Computing"
},
{
title: "npjurbansustain",
name: "npj Urban Sustainability"
},
{
title: "npjvaccines",
name: "npj Vaccines"
},
{
title: "npjviruses",
name: "npj Viruses"
},
{
title: "npjwomenshealth",
name: "npj Women's Health"
},
{
title: "dpn",
name: "NPP—Digital Psychiatry and Neuroscience"
},
{
title: "nutd",
name: "Nutrition & Diabetes"
},
{
title: "onc",
name: "Oncogene",
id: "41388",
description: "41388"
},
{
title: "oncsis",
name: "Oncogenesis"
},
{
title: "pr",
name: "Pediatric Research",
id: "41390",
description: "41390"
},
{
title: "tpj",
name: "The Pharmacogenomics Journal",
id: "41397",
description: "41397"
},
{
title: "pj",
name: "Polymer Journal",
id: "41428",
description: "41428"
},
{
title: "pcan",
name: "Prostate Cancer and Prostatic Diseases",
id: "41391",
description: "41391"
},
{
title: "npjschz",
name: "Schizophrenia"
},
{
title: "scientificamerican",
name: "Scientific American"
},
{
title: "scientificamericanmind",
name: "Scientific American Mind"
},
{
title: "sdata",
name: "Scientific Data"
},
{
title: "srep",
name: "Scientific Reports"
},
{
title: "sigtrans",
name: "Signal Transduction and Targeted Therapy"
},
{
title: "sc",
name: "Spinal Cord",
id: "41393",
description: "41393"
},
{
title: "scsandc",
name: "Spinal Cord Series and Cases"
},
{
title: "tp",
name: "Translational Psychiatry"
}
] };
//#endregion
export { getDataLayer as a, getArticleList as i, cookieJar as n, journalMap as o, getArticle as r, baseUrl as t };