40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
const got = require('@/utils/got');
|
|
const cheerio = require('cheerio');
|
|
const utils = require('./utils');
|
|
const { parseDate } = require('@/utils/parse-date');
|
|
|
|
module.exports = async (ctx) => {
|
|
const { id } = ctx.params;
|
|
const link = `${utils.baseUrl}/collection/${id}.html`;
|
|
const { data: response } = await got(link, {
|
|
https: {
|
|
rejectUnauthorized: false,
|
|
},
|
|
});
|
|
|
|
const $ = cheerio.load(response);
|
|
|
|
const initialState = utils.parseInitialState($);
|
|
|
|
const { collectionDetail } = initialState.collectionDetail;
|
|
const list = collectionDetail.article_list.datalist.map((e) => ({
|
|
title: e.title,
|
|
link: `${utils.baseUrl}/article/${e.aid}.html`,
|
|
description: e.summary,
|
|
pubDate: parseDate(e.dateline, 'X'),
|
|
author: e.user_info.username,
|
|
}));
|
|
|
|
const items = await utils.ProcessFeed(list, ctx.cache);
|
|
|
|
const info = `虎嗅 - ${collectionDetail.name}`;
|
|
|
|
ctx.state.data = {
|
|
title: info,
|
|
description: collectionDetail.summary,
|
|
image: collectionDetail.icon,
|
|
link,
|
|
item: items,
|
|
};
|
|
};
|