pureink/inkrss

部分 RSS 没有 pubDate 属性.

OrangeX4 opened this issue · 8 comments

部分 RSS 源没有 pubDate 属性, 例如 RSS HUB 里爬取一些网站信息, 生成的 RSS 一般没有 pubDate 字段.

另外一种情况就是博客, 有许多博客的时间信息为 published 字段, 例如 https://orangex4.cool/atom.xml.

希望能够加强对这些不太规范的 RSS 的处理.

首先是pubdate和published的问题,这部分可以参考wiki看一下区别,atom标准使用published而rss2.0使用pubdate,因此这两种都遵循规范。
这里使用vercel的云函数进行解析,其实只是调用rss-parser。因此无论是atom还是rss2.0标准都可以正常解析并使用。
对于没有时间属性的订阅源问题,我认为既然通知的是更新的内容,一定要“新”,时间属性是必要的。可以考虑一下订阅微博热搜榜的情况,我认为用其他方法判断是否有新内容出现是不合适的(这里的新代表从未出现,而不是时间上的新)

噢,感谢回复。

原来 vercel 那里处理了,那这个是我想多余了。

对于后者,您说的也很有道理,所以我就只是根据我自己的情况修改了一下判断方法:在没有 pubDate 属性,并且 id 不相同的时候,推送最新一条 item 并更新 KV。

不过现在碰到了点 bug,我使用 ‘/test’ 路径的时候,可以正常推送更新;但是定时任务却不能正常推送更新,就很奇怪,暂时怀疑是 Cloudflare 的问题。

定时任务的部署会有一定的延迟,大概在半个小时左右。也不排除cloudflare的问题,今天似乎有网络的故障。如果修改逻辑的话需要注意kv每日的写次数只有1000次。

感谢提醒,不过我开了 Cloudflare Worker 的 Logs,也看见有定时任务的 Logs 产生,应该被执行了,只是执行结果很奇怪。

‘\test’ 产生的 Logs 和 Cron 产生的 Logs 不一样,即使它们调用的是一个完全相同的函数。我不太清楚是不是 Cloudflare 这两种不同的调用方法是否会影响到这个函数的生效方式。

我会再去调试一下看看。

看了一下我的log,从昨天下午5点开始抛出异常。我暂时也不能确定具体的原因,但大概率是cloudflare的问题。
截屏2021-09-10 下午2 29 20

确实像是 Cloudflare 的问题,我使用 “/test” 正常触发,但是 Cron 任务的话,就会报 "Network connection lost." 的错误,出问题的是 await fetch(...) 的地方, 可能 Cron 现在的 fetch 函数不能正常执行?

另一个issue里也有人有一样的问题,社区里 https://community.cloudflare.com/t/worker-throws-network-connection-lost/287314 有相同的问题恰好在今天多了两个回复也是关于cron的,只能耐心等待了。

好了恢复了一点,我这里正常推送了一两条。