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(),
+ };
+};