前言※
RSS 是一个博客必不可少的功能,但不像 hexo、typecho 等博客框架安装一个插件就能实现 RSS 订阅源,但我所开发的基于 Trilium 的博客方案(详见: 全新的博客发布体验 - 基于Trilium实现完美的博客发布方案)则没有现成的插件供我使用,于是只能自己开搞。
查阅资料后发现RSSHub能实现自定义订阅源的功能,下文就基于 RSSHub 创建 RSS 订阅源展开叙述。
RSSHub 是什么※
官网介绍:
RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。
可见 RSSHub 可以将任意网页通过 HTML 解析的方式,生成符合 RSS 标准的 XML 文件。
实现※
安装 RSSHub※
因为我们需要自己制作一个 RSS 订阅源,所以需要下载源码修改:
git clone https://github.com/DIYgod/RSSHub.git
cd RSSHub
npm install
npm start
此时依赖安装正确的话,通过localhost:1200
可以访问 RSSHub 的界面:
定义路由※
阅读官方文档,可知/lib/router.js
文件中定义了所有路由,我们可以在其中加入自己定义的路由:
router.get('/feed', lazyloadRouteHandler('./routes/ankia/blogs'));
这意味着当我通过域名:1200/fedd
地址访问时,对应到./routes/ankia/blogs.js
的规则。
制作一个 RSS 源※
浏览routes
中的自带源发现,制作 RSS 源的流程很简单,就是请求给定的网址,解析 html 文本,提取出 RSS 需要的信息即可。
以下是本站的 RSS 源示例:
const got = require('@/utils/got');
const cheerio = require('cheerio');
const timezone = require('@/utils/timezone');
module.exports = async (ctx) => {
const currentUrl = 'https://www.ankia.top';
const response = await got(currentUrl);
const $ = cheerio.load(response.data);
const $articles = $('#blogItems');
const items = $articles
.map((_, el) => {
const title = $(el).find('#blogItemTitle').text().trim();
const link = $(el).find('a').attr('href');
const postDate = $(el).find('#blogPostDate').attr("blogpostdate");
const pubDate = timezone(new Date(postDate), +8);
const description = $(el).find('#blogItemSummary').text().trim();
return {
title,
description,
link,
pubDate,
};
})
.toArray();
ctx.state.data = {
title: '东东的小黑盒',
link: currentUrl,
item: items,
};
};
配置RSS模板※
在 /lib/views/rss.art
中可以定义RSS模板的样式,这里我进行了如下更改:
<webMaster>[email protected] (DIYgod)</webMaster>
改为 <webMaster>[email protected]</webMaster>
代理到主域名※
此时,通过ip:1200/feed
已经能够访问本站的 feed 地址了,但显然这样的 feed 地址不够美观,接下来在 caddy2 中的代理规则中加入一行:
reverse_proxy /feed localhost:1200
将主域名在/feed
地址上的访问代理到localhost:1200/feed
上,这样就可以用主域名/feed
的方式访问 feed 地址啦。
设置开机自启※
开机自启是各个服务必须配置的流程了,pm2 是一款开源的 Nodejs 进程管理器,可以方便的实现自动启动,先进行下载:
npm install pm2 -g
使用 pm2 运行 RSSHub:
pm2 start lib/index.js
保存当前运行的进程,并且注册到系统启动项:
pm2 save
pm2 startup
结语※
目前已经可以在小站主页获取 RSS 地址,欢迎订阅~
参考资料: