diff --git a/docs/README.md b/docs/README.md index 23952beff..d28b262c2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -680,6 +680,14 @@ key: 产品密钥 参数: id,独家号 id,可在对应独家号页 URL 中找到 +## 今日头条 + +举例: [https://rsshub.app/jinritoutiao/keyword/ai](https://rsshub.app/jinritoutiao/keyword/ai) + +路由: `/jinritoutiao/keyword/:keyword` + +参数: keyword,关键词 + ## 极客时间 ### 专栏文章 diff --git a/router.js b/router.js index 7115e4916..6861e8997 100644 --- a/router.js +++ b/router.js @@ -170,6 +170,9 @@ router.get('/biquge/novel/latestchapter/:id', require('./routes/biquge/chapter') router.get('/toutiao/today', require('./routes/toutiao/today')); router.get('/toutiao/user/:id', require('./routes/toutiao/user')); +// 今日头条 +router.get('/jinritoutiao/keyword/:keyword', require('./routes/jinritoutiao/keyword')); + // Disqus if (config.disqus && config.disqus.api_key) { router.get('/disqus/posts/:forum', require('./routes/disqus/posts')); diff --git a/routes/jinritoutiao/keyword.js b/routes/jinritoutiao/keyword.js new file mode 100644 index 000000000..b071385e6 --- /dev/null +++ b/routes/jinritoutiao/keyword.js @@ -0,0 +1,30 @@ +const axios = require('axios'); +const config = require('../../config'); + +module.exports = async (ctx) => { + const keyword = ctx.params.keyword; + + const response = await axios({ + method: 'get', + url: `https://www.toutiao.com/search_content/?offset=0&format=json&keyword=${encodeURIComponent(keyword)}&autoload=true&count=20&cur_tab=1&from=search_tab`, + headers: { + 'User-Agent': config.ua, + }, + }); + let data = response.data.data; + data = data.filter(function(item) { + return !item.cell_type; + }); + + ctx.state.data = { + title: `今日头条: ${keyword}`, + link: `https://www.toutiao.com/search/?keyword=${keyword}`, + description: `${keyword}`, + item: data.map((item) => ({ + title: `${item.media_name}: ${item.title}`, + description: `${item.abstract}`, + pubDate: `${new Date(parseInt(item.create_time) * 1000)}`, + link: `${item.article_url}`, + })), + }; +};