2024年7月RSSHub开发体验
时隔两年半,再次给RSSHub提PR(上次PR的记录传送门)
TonyRL老师PR Merge的很快,代码是下午完成的,PR是晚上合并的😘
feat(route): add route for DuckDB news
代码架构变动
具体看DIYGod本人的博客,这里不过多赘述:一个六岁开源项目的崩溃与新生
我关注的就三个点:语言JS -> TS,框架Koa ->Hono,网络请求还没想好要不要替换Got
但也谈不上有多关注😅,就JS语言的迭代速度而言,怕不是永远都在学习新框架,新语法的路上。框架太多,语法太杂,没必要为了赶时髦,学些老工具就能解决的不错的问题。
但作为开发者而言,我十分乐见本次改动:我只添加了两个文件(命名空间和一个路由),就完成了RSS的输出与文档的生成
文档的例子不错,很容易理解路由编写规则,看一下手册和别人提交的PR,就能自己实现代码。
提交commit的时候,也不再像之前一样,强制ESLint扫描所有文件,这就很舒服(三年前一个commit转了3分钟,让我第一次接触了pre-commit这种东西😂)
代码调试
如果非要吐槽点什么的话,就是RSSHub代码调试不太方便😐
我自己是Jquery语法有点遗忘,就得不断尝试Cheerio抓取,这部分内容就需要自己搭建个运行环境进行测试:
pnpm install cheerio
pnpm install got
参考手册内容(Pure ESM package)开启ESM支持
这里贴一下用于调试测试的代码:
import got from 'got';
import { load } from 'cheerio';
const baseUrl = 'https://duckdb.org/news/';
const response = await got(baseUrl);
const $ = load(response.body);
const list = $('.postpreview')
.toArray()
.map((item) => {
item = $(item);
return {
title: item.find('h3').text().trim(),
link: `https://duckdb.org${item.find('a').eq(2).attr('href')}`,
};
});
{
const response = await got(list[1].link);
const $ = load(response.body);
console.log($('.author').text())
console.log($('.singleentry').html())
}
我对DuckDB信息源做了获取全文操作的操作,结果调试的时候始终不显示全文信息,我以为是缓存的问题,四处翻找文档没找到答案😅而对于RSSHub的缓存,我还没想到没个好的解决方案
后面测试的时候才发现是Body没解析,补了个commit才解决
个人想法
这次PR编写于提交虽然有点小磕绊,但总体而言,相比较于第一次提交PR而言顺利不少
我个人是非常喜欢RSS订阅这种模式的,目前使用FreshRSS的作为主要的阅读器。但我们学校更喜欢第一时间发微信信息与QQ信息😅,RSS订阅的最大作用反倒是让信息归档更加方便些。
最后,RSSHub陪我度过了四年的本科生活,这里衷心祝愿RSSHub项目发展顺利🧐