RSSHub/lib/v2/zhihu/daily_section.js

52 lines
2.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const got = require('@/utils/got');
const utils = require('./utils');
const { parseDate } = require('@/utils/parse-date');
// 参考https://github.com/izzyleung/ZhihuDailyPurify/wiki/%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-API-%E5%88%86%E6%9E%90
// 文章给出了v7版 api的信息包含全文api
module.exports = async (ctx) => {
const { sectionId } = ctx.params;
const listRes = await got({
method: 'get',
url: `https://news-at.zhihu.com/api/7/section/${sectionId}`,
headers: {
...utils.header,
Referer: `https://news-at.zhihu.com/api/7/section/${sectionId}`,
},
});
// 根据api的说明过滤掉极个别站外链接
const storyList = listRes.data.stories.filter((el) => el.url.startsWith('https://daily.zhihu.com/'));
const resultItem = await Promise.all(
storyList.map((story) => {
const url = 'https://news-at.zhihu.com/api/7/news/' + story.id;
const item = {
title: story.title,
pubDate: parseDate(story.date, 'YYYYMMDD'),
description: '',
link: 'https://daily.zhihu.com/story/' + story.id,
};
return ctx.cache.tryGet(`https://daily.zhihu.com/story/${story.id}`, async () => {
const storyDetail = await got({
method: 'get',
url,
headers: {
Referer: url,
},
});
item.description = utils.ProcessImage(storyDetail.data.body.replace(/<div class="meta">([\s\S]*?)<\/div>/g, '<strong>$1</strong>').replace(/<\/?h2.*?>/g, ''));
return item;
});
})
);
ctx.state.data = {
title: `${listRes.data.name} - 知乎日报`,
link: 'https://daily.zhihu.com',
description: '每天3次每次7分钟',
image: 'http://static.daily.zhihu.com/img/new_home_v3/mobile_top_logo.png',
item: resultItem,
};
};