diff --git a/lib/v2/trendingpapers/maintainer.js b/lib/v2/trendingpapers/maintainer.js new file mode 100644 index 00000000000000..acfb2d231fc1eb --- /dev/null +++ b/lib/v2/trendingpapers/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/papers/:category?/:time?/:cited?': ['CookiePieWw'], +}; diff --git a/lib/v2/trendingpapers/papers.js b/lib/v2/trendingpapers/papers.js new file mode 100644 index 00000000000000..f7cb8dd42bb442 --- /dev/null +++ b/lib/v2/trendingpapers/papers.js @@ -0,0 +1,42 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const { time = 'Since beginning', cited = 'Cited and uncited papers', category = 'All categories' } = ctx.params; + + const rootUrl = 'https://trendingpapers.com'; + const currentUrl = `${rootUrl}/api/papers?p=1&o=pagerank_growth&pd=${time}&cc=${cited}&c=${category}`; + + const response = await got({ + method: 'get', + url: currentUrl, + }); + + const $ = response.data; + + const papers = $.data + .map((_) => { + const title = _.title; + const abstract = _.abstract; + const url = _.url; + const arxivId = _.arxiv_id; + + const pubDate = parseDate(_.pub_date); + const summaryCategories = _.summary_categories; + + return { + title, + description: abstract, + link: url, + guid: arxivId, + pubDate, + category: summaryCategories, + }; + }); + + ctx.state.data = { + title: `Trending Papers on arXiv.org | ${category} | ${time} | ${cited} | `, + link: currentUrl, + item: papers, + }; +}; diff --git a/lib/v2/trendingpapers/radar.js b/lib/v2/trendingpapers/radar.js new file mode 100644 index 00000000000000..243533c9d347ec --- /dev/null +++ b/lib/v2/trendingpapers/radar.js @@ -0,0 +1,11 @@ +module.exports = { + 'trendingpapers.com': { + _name: 'trendingpapers', + '.': [ + { + title: 'Trending Papers on arXiv', + docs: 'https://docs.rsshub.app/routes/journal#trending-papers-trending-papers-on-arxiv', + }, + ], + }, +}; diff --git a/lib/v2/trendingpapers/router.js b/lib/v2/trendingpapers/router.js new file mode 100644 index 00000000000000..d85cef26aef88d --- /dev/null +++ b/lib/v2/trendingpapers/router.js @@ -0,0 +1,3 @@ +module.exports = (router) => { + router.get('/papers/:category?/:time?/:cited?', require('./papers.js')); +}; diff --git a/website/docs/routes/journal.mdx b/website/docs/routes/journal.mdx index f402a34ba8851a..4005e364838798 100644 --- a/website/docs/routes/journal.mdx +++ b/website/docs/routes/journal.mdx @@ -462,6 +462,12 @@ You can get all short name of a journal from [https://www.nature.com/siteindex]( +## Trending Papers {#trending-papers} + +### Trending Papers on arXiv {#trending-papers-trending-papers-on-arxiv} + + + ## USENIX {#usenix} ### Security Symposia {#usenix-security-symposia}