V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
v2yllhwa
V2EX  ›  分享创造

RSSWorker:一个运行在 Cloudflare Worker 上的 RSS 生成工具

  •  4
     
  •   v2yllhwa ·
    yllhwa · 2023-10-12 23:07:52 +08:00 · 13776 次点击
    这是一个创建于 411 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RSSWorker:一个运行在 Cloudflare Worker 上的 RSS 生成工具

    链接: https://github.com/yllhwa/RSSWorker

    主要灵感来源是 RSSHub(非常齐全)。

    我想每次刷新就拿到最新的内容(不要缓存),但是又不想折腾反爬问题,所以就在 Cloudflare Worker 上面跑一个。

    路由支持

    目前只支持了我自己用的几个:

    • bilibili 动态 (/bilibili/user/dynamic/:uid)
    • telegram 频道 (/telegram/channel/:username)
    • weibo 用户 (/weibo/user/:uid)

    不过添加支持很简单,因为都是 js ,格式也差不多,可以很轻松地从 RSSHub 的代码迁移过来(微博相关就是直接 copy 的 RSSHub )。

    其他

    我重度使用的是 bilibili 的路由,所以很 hack 地用 fetch api 手搓了一个 grpc 请求( bilibili 对 grpc 的反爬不严格)。

    因为刚入坑 RSS ,所以可能很多细枝末节的东西没有考虑到,欢迎提 issue 和 pr 。

    使用的一些工具

    Cloudflare Worker 有打包 gzip 压缩后的文件大小限制(免费用户 1 MB ,付费用户 10MB ),所以需要尽量用 Cloudflare Worker 提供的接口,比如 HTML 解析使用 HTMLRewriter 等。

    然后就是构造 bilibili 的 grpc 请求用了第三方的库@bufbuild/buf,因为官方的在 Worker 环境下面跑不起来。

    路由框架使用的是 Hono , 模板引擎则使用 mustache ( Worker 环境好像不能使用带 eval 的库)

    感想

    Cloudflare 确实牛, 不过这个 Worker 环境比较特殊,基础设施还是好多没有建设好,好多地方要手搓。

    11 条回复    2023-10-20 09:10:01 +08:00
    caomingjun
        1
    caomingjun  
       2023-10-13 01:25:23 +08:00 via Android
    好东西,star 了
    建议清理一下代码,bilibili 里面好像有不少用不到的代码
    yuhangch
        2
    yuhangch  
       2023-10-13 08:59:06 +08:00
    我也有类似的需求,技术力不足,我是跑一个 rsshub 实例,用 cf worker 反代,做一些路由的自定义和其他的处理。。
    wdssmq
        3
    wdssmq  
       2023-10-13 08:59:41 +08:00   ❤️ 1
    wdssmq/rsshub-cf: Cloudflare Worker 反代 RSSHub
    https://github.com/wdssmq/rsshub-cf

    我到是不要求即时性,阅读器多试几次最终能拿到就行,Worker 后边套了多个 RSSHub 站点,每次随机选一个抓取。。

    "https://vercel.mizuno2023.xyz/",
    "https://rsshub.mizuno2023.xyz/",

    这两个是我自己的服务。。
    AboutRSS
        4
    AboutRSS  
       2023-10-13 10:49:37 +08:00
    谢谢分享创造! star 了。
    THESDZ
        5
    THESDZ  
       2023-10-13 11:00:51 +08:00   ❤️ 1
    项目 about 的地方可以设置一些 topic 增加被检索到的可能性
    glogo
        6
    glogo  
       2023-10-13 12:02:20 +08:00
    你们用什么 rss 阅读器?
    xygod
        7
    xygod  
       2023-10-16 11:42:05 +08:00
    我自己也搞了类似的解析网页生成 rss 的 worker ,不知道是因为免费的 cpu 时间太短了还是解析 html 太占内存,解析有些网站的时候有时候会超时失败
    v2yllhwa
        8
    v2yllhwa  
    OP
       2023-10-16 11:55:16 +08:00
    @xygod 我是付费的,因为还有其他项目跑在 worker 上面,顺便就做了这个。
    你是用 htmlrewriter 解析的 html 吗,用 cheerio 之类的可能会很慢
    xygod
        9
    xygod  
       2023-10-17 09:04:35 +08:00
    @v2yllhwa #8 cheerio ,我直接从我的其它项目里拿过来用的,我试试 htmlrewriter
    MoriEcho
        10
    MoriEcho  
       2023-10-17 23:47:43 +08:00
    感谢!
    平时我用的是 bilibili 的投稿,想补充进去,大致看了一眼发现好像不是简单地在 user 下新建一个 video.js 就能解决
    可能有时间再研究一下
    xygod
        11
    xygod  
       2023-10-20 09:10:01 +08:00
    @v2yllhwa #8 尝试换了 htmlrewriter ,效果拔群,执行消耗直接干掉了 99%。。。太感谢啦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3414 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:28 · PVG 19:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.