diff --git a/docs/new-media.md b/docs/new-media.md index f1409bf814..cc071dafb4 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -1461,6 +1461,20 @@ column 为 third 时可选的 category: +### 专栏 + + + +| 轻松一刻 | 槽值 | 人间 | 大国小民 | 三三有梗 | 数读 | 看客 | 下划线 | 谈心社 | 哒哒 | 胖编怪聊 | 曲一刀 | 今日之声 | 浪潮 | 沸点 | +| -------- | ---- | ---- | -------- | -------- | ---- | ---- | ------ | ------ | ---- | -------- | ------ | -------- | ---- | ---- | +| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | + + + +### 数读 + + + ## 维基百科 ### 中国大陆新闻动态 diff --git a/docs/traditional-media.md b/docs/traditional-media.md index 40d6ab2966..524e733a9a 100644 --- a/docs/traditional-media.md +++ b/docs/traditional-media.md @@ -648,18 +648,6 @@ category 对应的关键词有 -## 网易新闻专栏 - -### 栏目 - - - -| 轻松一刻 | 槽值 | 人间 | 大国小民 | 三三有梗 | 数读 | 看客 | 下划线 | 谈心社 | 哒哒 | 胖编怪聊 | 曲一刀 | 今日之声 | 浪潮 | 沸点 | -| -------- | ---- | ---- | -------- | -------- | ---- | ---- | ------ | ------ | ---- | -------- | ------ | -------- | ---- | ---- | -| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | - - - ## 卫报 The Guardian 通过提取文章全文,以提供比官方源更佳的阅读体验。 diff --git a/lib/router.js b/lib/router.js index e1a930ac61..072d290706 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2185,9 +2185,6 @@ router.get('/cug/xgxy', require('./routes/universities/cug/xgxy')); router.get('/cug/news', require('./routes/universities/cug/news')); router.get('/cug/gcxy/:type?', require('./routes/universities/cug/gcxy/index')); -// 网易 - 网易号 -router.get('/netease/dy/:id', require('./routes/netease/dy')); - // 海猫吧 router.get('/haimaoba/:id?', require('./routes/haimaoba/comics')); @@ -2536,9 +2533,6 @@ router.get('/mqube/top', require('./routes/mqube/top')); router.get('/letterboxd/user/diary/:username', require('./routes/letterboxd/userdiary')); router.get('/letterboxd/user/followingdiary/:username', require('./routes/letterboxd/followingdiary')); -// 网易大神 -router.get('/netease/ds/:id', require('./routes/netease/ds')); - // javlibrary router.get('/javlibrary/users/:uid/:utype', require('./routes/javlibrary/users')); router.get('/javlibrary/videos/:vtype', require('./routes/javlibrary/videos')); @@ -2557,10 +2551,6 @@ router.get('/piapro/public/:type/:tag?/:category?', require('./routes/piapro/pub // 凤凰网 router.get('/ifeng/feng/:id/:type', require('./routes/ifeng/feng')); -// 网易公开课 -router.get('/open163/vip', require('./routes/netease/open/vip')); -router.get('/open163/latest', require('./routes/netease/open/latest')); - // 第一版主 router.get('/novel/d1bz/:category/:id', require('./routes/d1bz/novel')); @@ -2918,9 +2908,6 @@ router.get('/jijitang/publication', require('./routes/jijitang/publication')); // 新闻联播 router.get('/xwlb', require('./routes/xwlb/index')); -// 网易新闻专栏 -router.get('/netease/news/special/:type?', require('./routes/netease/news/special')); - // 端传媒 router.get('/initium/:type?/:language?', require('./routes/initium/full')); router.get('/theinitium/:model/:type?/:language?', require('./routes/initium/full')); @@ -3037,6 +3024,18 @@ router.get('/jike/user/:id', require('./routes/jike/user')); // 网易新闻 router.get('/netease/news/rank/:category?/:type?/:time?', require('./routes/netease/news/rank')); +router.get('/netease/news/special/:type?', require('./routes/netease/news/special')); +router.get('/netease/news/data', require('./routes/netease/news/data')); + +// 网易 - 网易号 +router.get('/netease/dy/:id', require('./routes/netease/dy')); + +// 网易大神 +router.get('/netease/ds/:id', require('./routes/netease/ds')); + +// 网易公开课 +router.get('/open163/vip', require('./routes/netease/open/vip')); +router.get('/open163/latest', require('./routes/netease/open/latest')); // Boston.com router.get('/boston/:tag?', require('./routes/boston/index')); diff --git a/lib/routes/netease/news/data.js b/lib/routes/netease/news/data.js new file mode 100644 index 0000000000..97bcad1913 --- /dev/null +++ b/lib/routes/netease/news/data.js @@ -0,0 +1,39 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const iconv = require('iconv-lite'); + +module.exports = async (ctx) => { + const response = await got({ + url: 'https://data.163.com', + method: 'get', + responseType: 'buffer', + }); + const $ = cheerio.load(iconv.decode(response.data, 'gbk')); + const dataStr = $('*') + .html() + .match(/var\sohnofuchlist=\[(.|\n)*"a"\];$/gm)[0]; + const arr = new Function(dataStr + 'ohnofuchlist.pop();return ohnofuchlist;')(); + + const item = await Promise.all( + arr.slice(0, 20).map(async (item) => { + const single = await ctx.cache.tryGet(item.url, async () => { + const res = await got.get(item.url); + const doc = cheerio.load(res.data); + const description = doc('#main-content').html() || doc('.post_body').html(); + return { + title: item.title, + link: item.url, + pubDate: new Date(item.time), + description, + }; + }); + return Promise.resolve(single); + }) + ); + + ctx.state.data = { + title: '数读 - 网易新闻', + link: 'https://data.163.com/', + item, + }; +};