fix 今日哈工大身份认证错误 (#1593)

发现部分文章需要身份认证后才能阅读,导致RSS输出错误。调整后RSS将不输出这类文章的内容。
This commit is contained in:
RANPOX 2019-02-21 15:24:04 +08:00 committed by DIYgod
parent d84d156193
commit 6dc40ea1ec
2 changed files with 36 additions and 5 deletions

View File

@ -1437,6 +1437,10 @@ GitHub 官方也提供了一些 RSS:
例如会议讲座的路径为`/taxonomy/term/10/25`,则可以通过`/hit/today/25`订阅该详细类别。
:::
::: warning 注意
部分文章需要经过统一身份认证后才能阅读全文。
:::
### 上海科技大学
<route name="信息科技与技术学院活动" author="HenryQW" example="/shanghaitech/sist/activity" path="/universities/shanghaitech/sist/activity"/>

View File

@ -15,24 +15,51 @@ module.exports = async (ctx) => {
const $ = cheerio.load(response.data);
const category_name = $('div.banner-title').text();
const list = $('.paragraph li span span a')
.map((i, e) => $(e).attr('href'))
const list = $('.paragraph li')
.map((i, e) => ({
path: $('span span a', e).attr('href'),
title: $('span span a', e).text(),
author: $('div a', e)
.attr('hreflang', 'zh-hans')
.text(),
}))
.get();
const out = await Promise.all(
list.map(async (item) => {
const link = host + item;
const { path, title, author } = item;
const link = host + path;
const cache = await ctx.cache.get(link);
if (cache) {
return Promise.resolve(JSON.parse(cache));
}
const response = await axios.get(link);
if (response.request.res.connection._host === 'ids.hit.edu.cn') {
const single = {
pubDate: new Date(
link
.split('/')
.slice(-4, -1)
.join('-')
).toUTCString(),
author: author,
link: link,
title: title,
description: '请进行统一身份认证后查看全文',
};
ctx.cache.set(link, JSON.stringify(single), 24 * 60 * 60);
return Promise.resolve(single);
}
const $ = cheerio.load(response.data);
const single = {
pubDate: new Date($('.left-attr.first').text()).toUTCString(),
author: $('.bottom_misc span span a').text(),
author: author,
link: link,
title: $('.article-title h3').text(),
title: title,
description: $('.article-content').text(),
};