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,
+ };
+};