RSSAid 3.0.0 发布

2024-07-21
#开源 #野草

时隔2年多再次对之前的开源的软件进行了更新, RSSAid 从两年前的 v1.6.5 版本来到了 v3.0.0.

rssaid 下载量

不难看出两年前的最后的一个版本使用的人数最多,也是当初最稳定的版本,两年之内我没有再更新时间,软件还是可用状态,但是最后一个版本遗留的问题作为开发者的我最清楚,它一直遗留在那里。

RSSAid 从一开始就使用 RSS-Radar 的 Javascript 版本的解析规则文件,中间有段时间上游 RSSHub 经历过一次重构,原来的规则文件发生了改变,然后和 RSSAid 功能相似的 IOS 版本开发者单独维护了一个文件,然后 GitHub Action 不断的更新规则,RSSAid 引用的规则文件也从 RSSHub 指向了 RSSBud 的仓库
Pasted Graphic 3

使用 JavaScript 没什么问题,但是实在是有点不太优雅,导致代码里多了一些很多不太好看的代码和必须依赖的 JavaScript 文件

RSSAid 部分的代码

route-recognizer min js

但是没有合适的契机,让我想对两年前的代码产生重构的想法。直到一个月前,GitHub 的仓库收到这样一个 Issue

update rules from RSSHub instance's api #47

RSSHub 又改版了,但是这个还不够,我又去看了看 RSSBud 的软件,它的界面和最初的那个版本大相径庭,我突然觉得是时候重构 RSSAid 了。

RSSAid 是面向 Android 用户的,但是最初开发的灵感是来自于 RSSBud 的,包括最初的界面也是。所以这次我决定连界面也遵循 Android 的 Material Design 风格进行重构了。重构过程的最大的问题就是需要读 JavaScript 版本的解析规则文件,但是有的时候吧 JavaScript 的代码真的没有那么好读,比如:

radar 的 JavaScript 的实现

这一小段代码引用了两个三方库,遗憾的是 Dart 并没有与之对应的库:

import RouteRecognizer from route-recognizer

所以我做的第一件事情是用 Dart 实现了 tldts 这个库:

tlots is a Dart ibrary to estract hostnames, domains, public suffixes, top-level domains and subdomains from

勉强用 Dart 实现了这个库,让它处于可用状态,然后准备边用 Dart 实现第二个库 route-recognizer, 边读 Radar 的解析规则代码,我突然意识到似乎不需要重写一个库去做这件事,尽管实际上这个库也快重写完成了,但是没关系,后面可以再重写,但是现在先发布 RSSAid。

route-recognizer

今天周六,除了上午出门买了杯咖啡,剩下的大部分时间都是坐在电脑前,肝了一天,总算把解析规则重写完成,剩下的就是调整页面,以及测试和修复问题,

变更记录

晚上八点四十左右,所有事情总算基本完成,重写规则和调整界面总共涉及了 32 个文件变动,JavaScript 终于进了垃圾箱。

assetsjs

GitHub Action 自动构建完成, RSSAid 也迎来了 3.0.0 的版本

• feat v3 0 0 release

所以花这么多时间在开源项目上有意义吗?对我来说是有意义的,这个项目我的实际收益是来自一位好心的网友赞助了我的一杯可乐钱,但是并不影响我对开源这件事情乐此不疲,软件开发之所以让我觉得很有趣,开源就是其中最大的一个原因。开源的最大的乐趣就是在于可以接触一些志同道合的小伙伴,虽然大家互不相识,但是会因为对一件事的兴趣而聚集在一起,然后添砖加瓦。

只要开源的软件能够帮助到别人,那么开源就是有意义的。