Skip to content

Commit

Permalink
feat(route): add nber route: NBER working paper (DIYgod#12008)
Browse files Browse the repository at this point in the history
* feat(route): add NBER working papers

* Modify the documentation

* Fix 'url is not defined' bug

* Remove async of get_element function

* Remove meaningless comments

* Update docs/en/journal.md

* Update docs/en/journal.md

* Change data acquisition methods to call api

* Remove wrong param 'ctx'

* Change documentation and radar

* Combine to file together & Cache each item & Add doi & Add pdf download link in description & Styling the description

* Add await in async function

* Clean the code

* Add config.cache.expire

* fix: typo

* Change 'abstract' acquisition method to parsing html from calling api

* Update lib/v2/nber/radar.js

* docs: fix typos

---------
  • Loading branch information
5upernova-heng authored Mar 3, 2023
1 parent 1726af2 commit fe9c82a
Show file tree
Hide file tree
Showing 7 changed files with 109 additions and 0 deletions.
14 changes: 14 additions & 0 deletions docs/en/journal.md
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,20 @@ Return results from 2020
| smart-cities | /technologyreview/smart-cities|
| space | /technologyreview/space |

## National Bureau of Economic Research

### All Papers

<RouteEn author="5upernova-heng" example="/nber/papers" path="/nber/papers" radar="1" supportScihub="1"/>

### New Papers

<RouteEn author="5upernova-heng" example="/nber/news" path="/nber/news" radar="1" supportScihub="1">

Papers that are published in this week.

</RouteEn>

## Nature Journal

::: tip Tips
Expand Down
14 changes: 14 additions & 0 deletions docs/journal.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,20 @@ pageClass: routes

<Route author="Derekmini" example="/mdpi/analytica" path="/mdpi/:journal" :paramsDesc="['期刊名称,从期刊主页 URL 中获得']" radar="1" rssbud="1"/>

## National Bureau of Economic Research

### 全部论文

<Route author="5upernova-heng" example="/nber/papers" path="/nber/papers" radar="1" supportScihub="1"/>

### 新论文

<Route author="5upernova-heng" example="/nber/news" path="/nber/news" radar="1" supportScihub="1">

在网站上被标记为 "new" 的论文

</Route>

## Nature 系列

::: tip Tips
Expand Down
48 changes: 48 additions & 0 deletions lib/v2/nber/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
const got = require('@/utils/got');
const cheerio = require('cheerio');
const path = require('path');
const { art } = require('@/utils/render');
const { parseDate } = require('@/utils/parse-date');

async function getData(url) {
const response = await got(url).json();
return response.results;
}

module.exports = async (ctx) => {
const url = 'https://www.nber.org/api/v1/working_page_listing/contentType/working_paper/_/_/search';
const baseUrl = 'https://www.nber.org';
const config = require('@/config').value;
const data = await ctx.cache.tryGet(url, () => getData(url), config.cache.routeExpire, false);
const items = await Promise.all(
data
.filter((article) => ctx.path === '/papers' || article.newthisweek)
.map((article) => {
const link = `${baseUrl}${article.url}`;
return ctx.cache.tryGet(link, async () => {
const response = await got(link);
const $ = cheerio.load(response.data);
const downloadLink = $('meta[name="citation_pdf_url"]').attr('content');
const fullAbstract = $('.page-header__intro-inner').html();
return {
title: article.title,
author: $('meta[name="dcterms.creator"]').attr('content'),
pubDate: parseDate($('meta[name="citation_publication_date"]').attr('content'), 'YYYY/MM/DD'),
link,
doi: $('meta[name="citation_doi"]').attr('content'),
description: art(path.join(__dirname, 'template/description.art'), {
fullAbstract,
downloadLink,
}),
};
});
})
);

ctx.state.data = {
title: 'NBER Working Paper',
link: 'https://www.nber.org/papers',
item: items,
description: `National Bureau of Economic Research Working Papers articles`,
};
};
4 changes: 4 additions & 0 deletions lib/v2/nber/maintainer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = {
'/articles': ['5upernova-heng'],
'/news': ['5upernova-heng'],
};
19 changes: 19 additions & 0 deletions lib/v2/nber/radar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module.exports = {
'nber.org': {
_name: 'National Bureau of Economic Research',
'.': [
{
title: 'New working paper',
docs: 'https://docs.rsshub.app/en/journal.html#national-bureau-of-economic-research',
source: ['/papers'],
target: '/nber/news',
},
{
title: 'All working paper',
docs: 'https://docs.rsshub.app/en/journal.html#national-bureau-of-economic-research',
source: ['/papers'],
target: '/nber/papers',
},
],
},
};
4 changes: 4 additions & 0 deletions lib/v2/nber/router.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
module.exports = (router) => {
router.get('/papers', require('.'));
router.get('/news', require('.'));
};
6 changes: 6 additions & 0 deletions lib/v2/nber/template/description.art
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{{ if fullAbstract }}
{{@ fullAbstract }}
{{ /if}}
{{ if downloadLink }}
<a href={{ downloadLink }}>Download PDF</a>
{{ /if }}

0 comments on commit fe9c82a

Please sign in to comment.