diff --git a/assets/radar-rules.js b/assets/radar-rules.js index e0e26067f7..19f3e5cf15 100644 --- a/assets/radar-rules.js +++ b/assets/radar-rules.js @@ -1328,4 +1328,13 @@ }, 'macwk.com': { _name: 'MacWk', '.': [{ title: '应用更新', docs: 'https://docs.rsshub.app/program-update.html#macwk', source: '/soft/:name', target: '/macwk/soft/:name' }] }, 'zyshow.net': { www: [{ title: '', docs: 'https://docs.rsshub.app/game.html#lv-fa-shi-ying-di', source: '/:name/', target: '/zyshow/:name' }] }, + 'foreverblog.cn': { + _name: 'foreverblog', + www: [ + { + title: '十年之约', + docs: 'https://docs.rsshub.app/social-media.html#foreverblog', + }, + ], + }, }); diff --git a/docs/blog.md b/docs/blog.md index 3cadd225fb..6c689c03c3 100644 --- a/docs/blog.md +++ b/docs/blog.md @@ -205,3 +205,9 @@ pageClass: routes ### 文章 + +## 十年之约 + +### 文章 + + diff --git a/lib/router.js b/lib/router.js index 3a36ce286b..f9baa7933b 100644 --- a/lib/router.js +++ b/lib/router.js @@ -4230,6 +4230,9 @@ router.get('/now/news/rank', lazyloadRouteHandler('./routes/now/rank')); // s-hentai router.get('/s-hentai/:id?', lazyloadRouteHandler('./routes/s-hentai')); +// foreverblog +router.get('/blogs/foreverblog', lazyloadRouteHandler('./routes/blogs/foreverblog')); + // Netflix router.get('/netflix/newsroom/:category?/:region?', lazyloadRouteHandler('./routes/netflix/newsroom')); diff --git a/lib/routes/blogs/foreverblog.js b/lib/routes/blogs/foreverblog.js new file mode 100644 index 0000000000..724dad4080 --- /dev/null +++ b/lib/routes/blogs/foreverblog.js @@ -0,0 +1,33 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); + +module.exports = async (ctx) => { + const response = await got({ + method: 'get', + url: 'https://www.foreverblog.cn/feeds.html', + }); + + const data = response.data; + + const $ = cheerio.load(data); + const list = $('article[class="post post-type-normal"]'); + + ctx.state.data = { + title: '十年之约 - 订阅', + link: 'https://www.foreverblog.cn/feeds.html', + language: 'zh-cn', + item: + list && + list + .map((index, item) => { + item = $(item); + return { + title: item.find('a.post-title-link>span').text(), + description: item.find('div.post-author').text(), + link: item.find('a.post-title-link').attr('href'), + pubDate: item.find('time.post-time').text(), + }; + }) + .get(), + }; +};