feat: add vocus.cc publication (#1948)

This commit is contained in:
Xiang Li
2019-04-17 13:09:51 +09:00
committed by DIYgod
parent c3b1a05b04
commit 5e89f7357e
3 changed files with 31 additions and 0 deletions

View File

@@ -481,3 +481,7 @@
<Route name="标签" author="Cerebrater" example="/matters/tags/VGFnOjk3Mg" path="/matters/tags/:tid" :paramsDesc="['標籤 id可在標籤所在的 URL 找到']"/>
<Route name="作者" author="Cerebrater" example="/matters/author/az" path="/matters/author/:uid" :paramsDesc="['作者 id可在作者主頁的 URL 找到']"/>
## 方格子
<Route name="出版專題" author="Maecenas" example="/vocus/publication/bass" path="/vocus/publication/:id" :paramsDesc="['出版專題 id可在出版專題主页的 URL 找到']"/>

View File

@@ -1260,4 +1260,7 @@ router.get('/21caijing/channel/:name', require('./routes/21caijing/channel'));
// 北京邮电大学
router.get('/bupt/yz/:type', require('./routes/universities/bupt/yz'));
// VOCUS 方格子
router.get('/vocus/publication/:id', require('./routes/vocus/publication'));
module.exports = router;

View File

@@ -0,0 +1,24 @@
const axios = require('../../utils/axios');
module.exports = async (ctx) => {
const { id } = ctx.params;
const { _id, title, abstract } = (await axios.get(`https://api.sosreader.com/api/publication/${id}`)).data;
const { articles } = (await axios.get(`https://api.sosreader.com/api/articles?publicationId=${_id}&status=2&num=10&page=1`)).data;
const items = await Promise.all(
articles.map(async (item) => ({
title: item.title,
author: item.user.fullname,
description: (await axios.get(`https://api.sosreader.com/api/article/${item._id}`)).data.article.content,
pubDate: new Date(item.updatedAt).toUTCString(),
link: `https://vocus.cc/${id}/${item._id}`,
}))
);
ctx.state.data = {
title: `${title} - 方格子`,
link: `https://vocus.cc/${id}/home`,
description: abstract,
item: items,
};
};