diff --git a/lib/v2/southcn/nfapp/column.js b/lib/v2/southcn/nfapp/column.js index 2931c0633..51d69762a 100644 --- a/lib/v2/southcn/nfapp/column.js +++ b/lib/v2/southcn/nfapp/column.js @@ -7,11 +7,21 @@ const { parseArticle } = require('./utils'); module.exports = async (ctx) => { const columnId = ctx.params.column ?? 38; - const currentUrl = `https://api.nfapp.southcn.com/nfplus-manuscript-web/article/list?columnId=${columnId}&nfhSubCount=1&pageNum=1&pageSize=20`; // this api only returns up to 10 articles - const { data: response } = await got(currentUrl); + const getColumnDetail = `https://api.nfapp.southcn.com/nanfang_if/getColumn?columnId=${columnId}`; + const { data: responseColumn } = await got(getColumnDetail); + const columnName = responseColumn.columnName === '' ? `南方+` : `南方+ - ${responseColumn.columnName}`; + const columnLink = responseColumn.linkUrl === '' ? `https://m.nfapp.southcn.com/${columnId}` : responseColumn.linkUrl; - const list = response.data.list + /* Notes of columnLink: + 1) 南方号 uses responseColumn.linkUrl, e.g. https://static.nfapp.southcn.com/nfh/shareNFNum/index.html?nfhId=3392; + 2) 栏目/频道's responseColumn.linkUrl is empty, we use its subpage on 南方+ mobile site, e.g. https://m.nfapp.southcn.com/38; + 3) But https://m.nfapp.southcn.com/${columnId} may still be invalid for some higher-level columns, e.g. 20. + */ + + const getArticleList = `https://api.nfapp.southcn.com/nfplus-manuscript-web/article/list?columnId=${columnId}&nfhSubCount=1&pageNum=1&pageSize=20`; // this api only returns up to 20 articles + const { data: responseArticle } = await got(getArticleList); + const list = responseArticle.data.list .filter((i) => i.articleType === 0) .map((item) => ({ title: '【' + item.columnName + '】' + item.title, @@ -28,8 +38,8 @@ module.exports = async (ctx) => { const items = await Promise.all(list.map((item) => parseArticle(item, ctx.cache.tryGet))); ctx.state.data = { - title: `南方+`, - link: `https://m.nfapp.southcn.com/${columnId}`, + title: columnName, + link: columnLink, item: items, }; };