diff --git a/docs/programming.md b/docs/programming.md index a2305acb0..36a9d4825 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 feb1b49b8..fe831add0 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 000000000..ee3da0e62 --- /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(), + })), + }; +};