forked from DIYgod/RSSHub
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(route): add nber route: NBER working paper (DIYgod#12008)
* 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
1 parent
1726af2
commit fe9c82a
Showing
7 changed files
with
109 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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`, | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
module.exports = { | ||
'/articles': ['5upernova-heng'], | ||
'/news': ['5upernova-heng'], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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', | ||
}, | ||
], | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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('.')); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |