77 lines
2.4 KiB
JavaScript
77 lines
2.4 KiB
JavaScript
const got = require('@/utils/got');
|
|
const cheerio = require('cheerio');
|
|
const { parseDate } = require('@/utils/parse-date');
|
|
|
|
const titles = {
|
|
'5dd92265e4b0bf88dd8c1175': '热点',
|
|
'5dd921a7e4b0bf88dd8c116f': '订阅',
|
|
'604f1cbbe4b0cf5c2234d470': '学党史',
|
|
'5dd92242e4b0bf88dd8c1174': '政经',
|
|
'61259fd6e4b0d294f7f9786d': '合作区',
|
|
'61dfe511e4b0248b60d1c568': '名记名播',
|
|
'5dd9222ce4b0bf88dd8c1173': '大湾区',
|
|
'617805e4e4b037abacfd4820': '网评',
|
|
'5dd9220de4b0bf88dd8c1172': 'TV新闻',
|
|
'5e6edd50e4b02ebde0ab061e': '音频',
|
|
'600e8ad4e4b02c3a6af6aaa8': '澳门',
|
|
'600f760fe4b0e33cf6f8e68e': '政务',
|
|
'5ff7c0fde4b0e2f210d05e20': '教育',
|
|
'5fc88615e4b0e3055e693e0a': '深圳',
|
|
'600e8a93e4b02c3a6af6aa80': '中山',
|
|
'5dd921ece4b0bf88dd8c1170': '民生',
|
|
'61148184e4b08d3215364396': '社区',
|
|
'5dd9215fe4b0bf88dd8c116b': '专题',
|
|
'5e2e5107e4b0c14b5d0e3d04': '战疫',
|
|
'5f88eaf2e4b0a27cd404e09e': '横琴',
|
|
'5f86a3f5e4b09d75f99dde7d': '香洲',
|
|
'5e8c42b4e4b0347c7e5836e0': '金湾',
|
|
'5ee70534e4b07b8a779a1ad6': '斗门',
|
|
'607d37ade4b05c59ac2f3d40': '高新',
|
|
};
|
|
|
|
module.exports = async (ctx) => {
|
|
const column = ctx.params.column ?? '5dd92265e4b0bf88dd8c1175';
|
|
|
|
const rootUrl = 'https://www.hizh.cn';
|
|
const currentUrl = `${rootUrl}/channels/zjyapp/columns/${column}/stories.json`;
|
|
|
|
const response = await got({
|
|
method: 'get',
|
|
url: currentUrl,
|
|
});
|
|
|
|
let items = response.data.stories.slice(0, ctx.query.limit ? parseInt(ctx.query.limit) : 50).map((item) => ({
|
|
title: item.title,
|
|
author: item.author,
|
|
link: item.jsonUrl,
|
|
category: item.columnName,
|
|
pubDate: parseDate(item.published),
|
|
}));
|
|
|
|
items = await Promise.all(
|
|
items.map((item) =>
|
|
ctx.cache.tryGet(item.link, async () => {
|
|
const detailResponse = await got({
|
|
method: 'get',
|
|
url: item.link,
|
|
});
|
|
|
|
const content = cheerio.load(detailResponse.data.content);
|
|
|
|
content('figure').last().remove();
|
|
|
|
item.description = content.html();
|
|
item.link = `${rootUrl}/content.html?jsonUrl=${item.link}`;
|
|
|
|
return item;
|
|
})
|
|
)
|
|
);
|
|
|
|
ctx.state.data = {
|
|
title: `${titles[column]} - 珠海网`,
|
|
link: rootUrl,
|
|
item: items,
|
|
};
|
|
};
|