From 197ba6c672fd9eadd7df142a06aff50f38a43f23 Mon Sep 17 00:00:00 2001 From: Ethan Shen Date: Tue, 28 Jul 2020 23:26:40 +0800 Subject: [PATCH] feat: add kaggle user discussion (#5192) --- docs/programming.md | 4 ++++ lib/router.js | 1 + lib/routes/kaggle/user.js | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 lib/routes/kaggle/user.js diff --git a/docs/programming.md b/docs/programming.md index a2305acb0c..36a9d48257 100644 --- a/docs/programming.md +++ b/docs/programming.md @@ -222,6 +222,10 @@ GitHub 官方也提供了一些 RSS: +### User Discussion + + + ## LeetCode ### 文章 diff --git a/lib/router.js b/lib/router.js index feb1b49b8b..fe831add08 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2131,6 +2131,7 @@ router.get('/hatena/anonymous_diary/archive', require('./routes/hatena/anonymous // kaggle router.get('/kaggle/discussion/:forumId/:sort?', require('./routes/kaggle/discussion')); router.get('/kaggle/competitions/:category?', require('./routes/kaggle/competitions')); +router.get('/kaggle/user/:user', require('./routes/kaggle/user')); // PubMed Trending router.get('/pubmed/trending', require('./routes/pubmed/trending')); diff --git a/lib/routes/kaggle/user.js b/lib/routes/kaggle/user.js new file mode 100644 index 0000000000..ee3da0e622 --- /dev/null +++ b/lib/routes/kaggle/user.js @@ -0,0 +1,19 @@ +const got = require('@/utils/got'); + +module.exports = async (ctx) => { + const response = await got({ + method: 'get', + url: `https://www.kaggle.com/${ctx.params.user}/discussion_messages.json?sortBy=latestPost&group=commentsAndTopics&page=1&pageSize=20&sortby=latestPost&pagesize=20`, + }); + + ctx.state.data = { + title: `${ctx.params.user}'s discussion - Kaggle`, + link: `https://www.kaggle.com/${ctx.params.user}/discussion?sortBy=mostVotes&group=commentsAndTopics&page=1&pageSize=20`, + item: response.data.discussions.map((item) => ({ + title: item.forum.name, + link: `https://www.kaggle.com${item.forum.url}`, + description: item.message, + pubDate: new Date(item.postDate).toUTCString(), + })), + }; +};