diff --git a/docs/bbs.md b/docs/bbs.md
index 78ad80248a..411d44f10d 100644
--- a/docs/bbs.md
+++ b/docs/bbs.md
@@ -160,3 +160,17 @@ pageClass: routes
### 回帖
+
+## 天涯论坛
+
+### 子版块
+
+
+
+### 用户帖子
+
+
+
+### 用户的回帖
+
+
diff --git a/lib/router.js b/lib/router.js
index febf926a79..aa0a86faec 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -1649,6 +1649,11 @@ router.get('/soul/:id', require('./routes/soul'));
// 单向空间
router.get('/owspace/read/:type?', require('./routes/owspace/read'));
+// 天涯论坛
+router.get('/tianya/index/:type', require('./routes/tianya/index'));
+router.get('/tianya/user/:userid', require('./routes/tianya/user'));
+router.get('/tianya/comments/:userid', require('./routes/tianya/comments'));
+
// eleme
router.get('/eleme/open/announce', require('./routes/eleme/open/announce'));
router.get('/eleme/open-be/announce', require('./routes/eleme/open-be/announce'));
diff --git a/lib/routes/tianya/comments.js b/lib/routes/tianya/comments.js
new file mode 100644
index 0000000000..2f7e5c6a3b
--- /dev/null
+++ b/lib/routes/tianya/comments.js
@@ -0,0 +1,36 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const { userid } = ctx.params;
+ const url = 'http://www.tianya.cn/' + userid + '/bbs?t=post';
+ const responseraw = await got(url, { headers: { Referer: 'http://bbs.tianya.cn' } });
+ const $ = cheerio.load(responseraw.data);
+ const username = $('div.portrait h2 a')
+ .first()
+ .text();
+
+ const turl = `http://www.tianya.cn/api/bbsuser?method=userinfo.ice.getUserTotalReplyList¶ms.userId=${userid}¶ms.pageSize=20¶ms.bMore=true`;
+ const response = await got(turl, { headers: { Referer: 'http://bbs.tianya.cn' } });
+ const json = response.data;
+ const items = json.data.rows.map((ele) => {
+ const title = ele.title;
+ const clicknum = ` 点击数:${ele.click_counter},回复数:${ele.reply_counter}`;
+ const link = `http://bbs.tianya.cn/go_reply_position.jsp?item=${ele.item}&id=${ele.art_id}&rid=${ele.reply_id}`;
+ const date = ele.reply_time;
+
+ const pubDate = new Date(date).toUTCString();
+ return {
+ title,
+ description: title + clicknum,
+ link,
+ pubDate,
+ };
+ });
+ ctx.state.data = {
+ title: username + '的天涯回帖',
+ description: username,
+ link: url,
+ item: items,
+ };
+};
diff --git a/lib/routes/tianya/index.js b/lib/routes/tianya/index.js
new file mode 100644
index 0000000000..37dd33ac6f
--- /dev/null
+++ b/lib/routes/tianya/index.js
@@ -0,0 +1,34 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const { type } = ctx.params;
+ const url = 'http://bbs.tianya.cn/list-' + type + '-1.shtml';
+ const response = await got(url, { headers: { Referer: 'http://bbs.tianya.cn' } });
+ const $ = cheerio.load(response.data);
+ const typeTitle = $('div.location div.text strong').text();
+ const items = $('table > tbody ~ tbody > tr')
+ .map((_, ele) => {
+ const $item = cheerio.load(ele);
+ const title = $item('td.td-title a').text();
+ const link = $item('td.td-title a').attr('href');
+ const date = $item('td')
+ .last()
+ .attr('title');
+
+ const pubDate = new Date(date).toUTCString();
+ return {
+ title,
+ description: title,
+ link,
+ pubDate,
+ };
+ })
+ .get();
+ ctx.state.data = {
+ title: typeTitle,
+ description: typeTitle,
+ link: url,
+ item: items,
+ };
+};
diff --git a/lib/routes/tianya/user.js b/lib/routes/tianya/user.js
new file mode 100644
index 0000000000..a27070ac03
--- /dev/null
+++ b/lib/routes/tianya/user.js
@@ -0,0 +1,36 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+
+module.exports = async (ctx) => {
+ const { userid } = ctx.params;
+ const url = 'http://www.tianya.cn/' + userid + '/bbs?t=post';
+ const responseraw = await got(url, { headers: { Referer: 'http://bbs.tianya.cn' } });
+ const $ = cheerio.load(responseraw.data);
+ const username = $('div.portrait h2 a')
+ .first()
+ .text();
+
+ const turl = `http://www.tianya.cn/api/bbsuser?method=userinfo.ice.getUserTotalArticleList¶ms.userId=${userid}¶ms.pageSize=20¶ms.bMore=true`;
+ const response = await got(turl, { headers: { Referer: 'http://bbs.tianya.cn' } });
+ const json = response.data;
+ const items = json.data.rows.map((ele) => {
+ const title = ele.title;
+ const clicknum = ` 点击数:${ele.click_counter},回复数:${ele.reply_counter}`;
+ const link = `http://bbs.tianya.cn/post-${ele.item}-${ele.art_id}-1.shtml`;
+ const date = ele.compose_time;
+
+ const pubDate = new Date(date).toUTCString();
+ return {
+ title,
+ description: title + clicknum,
+ link,
+ pubDate,
+ };
+ });
+ ctx.state.data = {
+ title: username + '的天涯帖子',
+ description: username,
+ link: url,
+ item: items,
+ };
+};