造的一个轮子 Telegram RSSBot in Node.js

2019-10-01 00:15:49 +08:00
 fengkx

先放地址:https://github.com/fengkx/NodeRSSBot

作为一个 Telegram 重度使用者。非常喜欢用 Telegram 订阅通知类型的 RSS 或者低频更新的博客。之前一直用的是这个 Bot。它是用 Rust 写的。之所以造这个轮子最早是因为 Rust 版的 Bot 的 Release 不能在我当时的一个 VPS 上跑。Rustup 一波工具链下载编译下来把本来就小的硬盘给撑满了。再加上不能方便地自定义抓取时间间隔于是便造了这么个轮子。 最初设计的用法都高仿 Rust 版的 Bot。借助 Docker 可以很方便的部署,不用操心编译和环境问题。

但是如果你赏脸点进去看,可能会发现这已经是 9 个月前的事了。9 个月的时间里也有了不少的改进。同时demo也保持了稳定地运行。有效用户 189 人。有效订阅源 1000 个。于是在这里分享一下做出的改进吧。

改进

  1. 更多的可配置项。例如抓取间隔 view_all 等 更多配置项可见 https://github.com/fengkx/NodeRSSBot#配置项

  2. 多语言支持。开坑的时候就已经考虑了多语言的支持。有赖于 GitHub 上的贡献者的帮助现在 Bot 支持中(简繁)英西四种语言选项。并可以通过/lang命令自由切换

  3. opml 格式的导入导出。 /import/export 指令。值得注意的是,为群聊 import 需要在对应群聊中通过reply向 Bot 发送 opml 格式文件。 而为 Channelimport则需要修改 opml 文件名为形如@频道 id.opml并在私聊中发送。

  4. 更好的交互界面。 /rss 等的命令支持按键翻页 /unsub 可弹出按键供解除订阅

  5. 针对 Telegram 场景的用户生成 RSS 的输出优化。 此处以RSSHub为例。RSSHub 生成的 RSS 不同于站点生成的 RSS 在部分路由中存在未转义的 HTML 字符。由于 Telegram 有支持部分的 HTML 语法,所以会导致含有这些字符的消息无法发出。针对这些字符进行转义 https://github.com/fengkx/NodeRSSBot/issues/57
    另外,部分 RSS 路由例如 GitHub trending 标题中存在一些换行符 \n。在浏览器 base 的 RSS 阅读器中并不会有什么问题。因为 HTML 中的换行是 BR tag, 但是在 Telegram 中 \n 会被当作有效的换行符对待。这就导致了在 Rust 版 RSSBot 会产生这样的输出。

NodeRSSBot 会对换行符做处理而产生正常的输出。

4540 次点击
所在节点    分享创造
11 条回复
fengkx
2019-10-01 00:29:22 +08:00
两有一处小改进忘记了。
1. 按行分割的链接批量订阅
2. 通过 rel="alternate" type="application/atom+xml" 自动识别并订阅。 例如 v2ex.com 中有 <link rel="alternate" type="application/atom+xml" href="/feed/tab/tech.xml" /> 使用 /sub https://www.v2ex.com 会自动订阅到 https://www.v2ex.com/feed/tab/tech.xml
B1ock
2019-10-01 00:38:39 +08:00
图都裂了 qwq
chouj
2019-10-01 09:00:46 +08:00
感谢,一直在用。
wujunze
2019-10-01 09:58:08 +08:00
ifwangs
2019-10-01 12:09:08 +08:00
希望能支持 instant view
fengkx
2019-10-01 19:52:56 +08:00
@B1ock 貌似是因为 imgur 被墙。我这里能看到的。
fengkx
2019-10-01 19:53:47 +08:00
fengkx
2019-10-01 20:00:09 +08:00
@ifwangs 更喜欢一个应用做好一件事。Telegram 的优势在于它作为一个 IM 的及时性和通知能力。还有就是可以用在群聊之中做通知提醒,还有在群聊中订阅群主题相关的 feed 增加讨论度的功能。 所以我多在 Bot 里订阅通知类或者低频更新的博客。特别不喜欢微信公众号那种方式。就是想方设法把用户留在应用内,公众号阅读时如果想要回消息只能用浮窗这种方式。我个人认为很奇葩很不好用。阅读还是用浏览器的好。
ytbcsyzf
2019-10-02 09:24:49 +08:00
墙太高了
K1ri7o
2019-10-04 18:53:09 +08:00
测试订阅了 V2EX 的 rss 一直没推送 自己部署的也是😶
fengkx
2019-10-06 20:33:49 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/605804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX