feat(route): add paradigm writing (#11478)
* feat(router): add paradigm writing * Update lib/v2/paradigm/writing.js * Update lib/v2/paradigm/writing.js
This commit is contained in:
parent
9264d7afbe
commit
781c4270a3
|
|
@ -61,6 +61,12 @@ pageClass: routes
|
|||
|
||||
</RouteEn>
|
||||
|
||||
## Paradigm
|
||||
|
||||
### Writing
|
||||
|
||||
<RouteEn author="Fatpandac" example="/paradigm/writing" path="/paradigm/writing" />
|
||||
|
||||
## Seeking Alpha
|
||||
|
||||
### Summary
|
||||
|
|
|
|||
|
|
@ -104,6 +104,12 @@ pageClass: routes
|
|||
|
||||
</Route>
|
||||
|
||||
## Paradigm
|
||||
|
||||
### Writing
|
||||
|
||||
<Route author="Fatpandac" example="/paradigm/writing" path="/paradigm/writing" />
|
||||
|
||||
## Seeking Alpha
|
||||
|
||||
### Summary
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = {
|
||||
'/writing': ['Fatpandac'],
|
||||
};
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
module.exports = {
|
||||
'paradigm.xyz': {
|
||||
_name: 'Paradigm',
|
||||
'.': [
|
||||
{
|
||||
title: 'Writing',
|
||||
docs: 'https://docs.rsshub.app/finance.html#paradigm',
|
||||
source: ['/writing'],
|
||||
target: '/paradigm/writing',
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
module.exports = function (router) {
|
||||
router.get('/writing', require('./writing'));
|
||||
};
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
const { parseDate } = require('@/utils/parse-date');
|
||||
|
||||
const baseUrl = 'https://www.paradigm.xyz';
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const url = `${baseUrl}/writing`;
|
||||
|
||||
const response = await got(url);
|
||||
const $ = cheerio.load(response.data);
|
||||
|
||||
const nextData = JSON.parse($('#__NEXT_DATA__').text());
|
||||
const buildId = nextData.buildId;
|
||||
const list = nextData.props.pageProps.posts.map((item) => ({
|
||||
title: item.title,
|
||||
link: `${baseUrl}${item.slug}`,
|
||||
api: `${baseUrl}/_next/data/${buildId}${item.slug}.json`,
|
||||
author: item.authors.map((author) => author.name).join(', '),
|
||||
pubDate: parseDate(item.originalDate),
|
||||
category: item.tags,
|
||||
}));
|
||||
|
||||
const items = await Promise.all(
|
||||
list.map((item) =>
|
||||
ctx.cache.tryGet(item.link, async () => {
|
||||
const response = await got(item.api);
|
||||
const $ = cheerio.load(response.data.pageProps.content, null, false);
|
||||
|
||||
// Remove the TOC
|
||||
$('.toc').remove();
|
||||
item.description = $.html();
|
||||
|
||||
return item;
|
||||
})
|
||||
)
|
||||
);
|
||||
|
||||
ctx.state.data = {
|
||||
title: 'Paradigm - Writing',
|
||||
link: url,
|
||||
item: items,
|
||||
};
|
||||
};
|
||||
Loading…
Reference in New Issue