Mystery0の小站

Mystery0の小站

GoRss2Webhook开发记录 #1 背景与模块设计

2022-05-23
GoRss2Webhook开发记录 #1 背景与模块设计

项目地址

https://github.com/Mystery00/GoRss2Webhook

项目需求

RSS是一个获取信息的好的方式,我自己也有在空闲时间打开v2或者rss阅读器阅读文章的习惯,前段时间发现有些朋友的技术能力有点差,就推荐了几篇我以前看过收藏的文章,于是就萌生了定期把我收藏的文章发出来的想法。

最开始是想靠手动的,也就是我看了一篇文章之后,觉得不错就发到群里去,后面发现太容易忘记了,因为我自身看文章的时间也是空闲时间,有时候在路上看内容,有时候就是看了一半去做其他事情,过了一会再回来继续看。于是就萌发了基于RSS来做这个自动分享的想法,整体效果就像 https://t.me/rss_kubernetes 的效果一样

图片

本来我想的是,这么简单的东西,应该有现成的才对,于是找了一波,找到了 Zapier ,收费的,我想要一个可以自部署的,于是,又找到了另一个 https://github.com/skx/rss2hook ,这个很接近我想要的效果了,但是实现太简单了,我想要能够自定义更强一些的东西。

最终,打算自己实现一个!

模块设计

图片-1653317841906

整体模块设计也是很简单的,controller作为触发器,可以通过cron或者接口的形式来触发core的逻辑。

core中会根据配置文件中的订阅rss配置,发起多个协程去请求rss源数据。

rss模块处理源数据,将已经拉取过的条目过滤掉,筛选出需要发送通知的rss条目。

store负责整体的存储,rss订阅、rss历史记录、webhook配置,存储可以有多种实现,存储到文件,或者仅仅存储在内存中。

rss订阅部分考虑到国情,需要能够支持代理、ua配置,webhook需要支持自定义Header以及token授权。

webhook部分也可以对接多种现成的接口,比如telegram bot、企业微信bot等常见的机器人。

RSS服务准备

开发过程中需要经常测试RSS的效果,因此用上很久之前就自建了的RSSHub

后续

这一篇文章大概介绍了GoRss2Webhook诞生的过程,以及我打算做的一个效果,从下一篇文章开始,会渐渐将实现的细节都写出来,也希望自己能够借着这个东西养成写文章的好习惯吧!