diff --git a/docs/README.md b/docs/README.md index e76445d9b..08ccba1b9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -504,4 +504,20 @@ key: 产品密钥 路由: `/biquge/novel/latestchapter/:id` -参数: id,小说 id,可在对应小说页 URL 中找到 \ No newline at end of file +参数: id,小说 id,可在对应小说页 URL 中找到 + +## 开发者头条 + +### 今天头条 + +举例: [https://rss.now.sh/toutiao/today](https://rss.now.sh/toutiao/today) + +路由: `/toutiao/today` + +### 独家号 + +举例: [https://rss.now.sh/toutiao/user/140544](https://rss.now.sh/toutiao/user/140544) + +路由: `/toutiao/user/:id` + +参数: id,独家号 id,可在对应独家号页 URL 中找到 diff --git a/router.js b/router.js index 6613dc411..2aab05ce4 100644 --- a/router.js +++ b/router.js @@ -87,4 +87,8 @@ router.get('/tucaoqq/post/:project/:key', require('./routes/tucaoqq/post')); // 笔趣阁 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')); + module.exports = router; diff --git a/routes/toutiao/today.js b/routes/toutiao/today.js new file mode 100644 index 000000000..e2fb65b1a --- /dev/null +++ b/routes/toutiao/today.js @@ -0,0 +1,35 @@ +const axios = require('axios'); +const template = require('../../utils/template'); +const cheerio = require('cheerio'); +const config = require('../../config'); + +const baseUrl = 'https://toutiao.io' +module.exports = async (ctx)=>{ + const response = await axios({ + method:'get', + url:baseUrl, + headers: { + 'User-Agent': config.ua, + 'Host':'toutiao.io' + }, + responseType: 'text' + }); + const $ = cheerio.load(response.data); + const title = $('#daily').find('.date>span').eq(0).text() + ' ' + $('#daily').find('.date>small').eq(0).text(); + + const list = $('.posts>.post', '#daily'); + const article_item = []; + for(let i=0;i{ + const id = ctx.params.id; + let requestUrl = `${baseUrl}/subjects/${id}?f=new`; + const response = await axios({ + method:'get', + url:requestUrl, + headers: { + 'User-Agent': config.ua, + 'Host':'toutiao.io' + }, + responseType: 'text' + }); + const $ = cheerio.load(response.data); + const image = $('#main').find('.text-center>.subject-cover>img').eq(0).attr('src'); + const link = requestUrl; + const title = $('#main').find('.text-center>h3').eq(0).text(); + const description = $('#main').find('.social-share-button').eq(0).attr('data-title'); + + const list = $('.posts>.post', '#main'); + const article_item = []; + for(let i=0;i