mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-12 08:10:32 +08:00
feat: add jian-ning blog (#5600)
Co-authored-by: Chang Lan <clan@eecs.berkeley.edu>
This commit is contained in:
45
lib/routes/blogs/jianning.js
Normal file
45
lib/routes/blogs/jianning.js
Normal file
@@ -0,0 +1,45 @@
|
||||
const got = require('@/utils/got');
|
||||
const cheerio = require('cheerio');
|
||||
const iconv = require('iconv-lite');
|
||||
const url = require('url');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const base_url = `http://jian-ning.com/all-articles.html`;
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: base_url,
|
||||
responseType: 'buffer',
|
||||
});
|
||||
const data = iconv.decode(response.data, 'gbk');
|
||||
const $ = cheerio.load(data);
|
||||
const list = $('li');
|
||||
const out = list
|
||||
.map(async (i, item) => {
|
||||
const link = url.resolve('http://jian-ning.com', $(item).find('a').attr('href'));
|
||||
const description = await ctx.cache.tryGet(link, async () => {
|
||||
const result = await got({
|
||||
method: 'get',
|
||||
url: link,
|
||||
responseType: 'buffer',
|
||||
headers: {
|
||||
Referer: base_url,
|
||||
},
|
||||
});
|
||||
const content = cheerio.load(iconv.decode(result.data, 'gbk'));
|
||||
return content('td td').html();
|
||||
});
|
||||
const post = {
|
||||
title: $(item).find('a').text(),
|
||||
link: link,
|
||||
pubDate: $(item).find('span').text(),
|
||||
description: description,
|
||||
};
|
||||
return post;
|
||||
})
|
||||
.get();
|
||||
ctx.state.data = {
|
||||
title: $('head > title').text(),
|
||||
link: base_url,
|
||||
item: await Promise.all(out),
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user