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

[风鈴 - RSS 订阅, 通知, 提醒] 为了满足我自己的订阅需求而开发的 RSS 阅读管理工具

  •  
  •   gaozihang · 15 天前 · 8861 次点击

    我自己使用过很多 RSS 的订阅管理的工具,但是都无法满足我自己的一些需求,比如监听更新后的回调、自定义渲染的网页内容等等,于是就有了开发这个工具的想法。

    App Store

    目前主要支持的功能:

    • WebHook: 我经常需要对特定的 RSS 源进行更新监控,并在更新后执行一些后续处理。例如,当某个 UP 主发布新内容时,我希望我的 NAS 设备能自动下载这个视频。因此,我添加了一个 WebHook 回调功能。每次 RSS 源更新时,系统会通过回调一个 URL 地址来通知我。

    • 定制化的渲染: 我个人非常喜欢阅读评论(有时甚至比文章内容还精彩),但现有的 RSS 阅读器只能订阅并显示文章内容。因此,我设想了一个能从 RSS 源链接中抓取部分内容并渲染到阅读页面的自定义功能。这个功能的基本工作原理是通过 JS 脚本注册一个处理函数,该函数会自动通过正则表达式匹配 RSS 链接。一旦匹配成功,就会执行这个函数,并将返回的内容渲染到阅读页面上。

    • PUSH 通知: 许多现有的 RSS 阅读器通过本地定时任务进行内容更新,但由于 iOS 系统的限制,定时任务的执行可能会出现延迟,这导致我无法及时知道 RSS 的更新情况。因此,我考虑通过服务端定时任务来更新 RSS ,并通过 APNs 将更新消息推送到相应设备。这样的设计也导致这款软件需要用户登录才能使用(这可能是不好的点, 后续可能可以通过匿名账号的问题解决?)。

    以下是使用自定义 JS 脚本渲染后的文章示例,你可以看到 V2EX 的评论区是如何被渲染的:

    // 通过 $w.register 注册一个处理函数, 并返回一个 html
    
    $w.register('.v2ex.com/t/.*', async (link)  => {
      try {
        const { data } = await $axios.get(link);
        const $ = await $cheerio.load(data);
    
        let html = '';
        for (const el of $("div[id^='r_'].cell").toArray()) {
          const username = $(el).find('strong a').text();
          const time = $(el).find('.ago').attr('title');
          const content = $(el).find('.reply_content').text();
          const avatar = $(el).find('.avatar').attr('src');
    
          html += `
            <div style="margin-bottom: 15px;">
              <div style="display: flex;">
                <div style="border-radius: 20px; margin: 5px 10px 0 0;">
                  <img src="${avatar}" style="width: 35px; height: 35px;" alt="" />
                </div>
                <div>
                  <p style="font-weight: bold; font-size: 14px; margin: 0;">${username}</p>
                  <p style="color: #999; font-size: 12px; margin: 0 0 5px 0;">${time}</p>
                </div>
              </div>
              <p style="margin: 0;">${content}</p>
            </div>
          `;
        }
    
        return html;
      } catch (e) {
        $alert(e);
      }
    });
    

    3 条回复    2024-04-15 17:36:27 +08:00
    chanChristin
        1
    chanChristin  
       15 天前
    试用了一下感觉挺不错的,提两个小建议
    可以增加详情页左右滑查看上一篇下一篇,现在还得退出才能看下一篇
    建议增加 opml 导入功能, 现在只能一个一个加,对于老用户迁移很不方便。
    gaozihang
        2
    gaozihang  
    OP
       15 天前
    @chanChristin

    开发的时候想过怎么更便捷切换文章, 试了几种交互但是感觉体验都不是很好, 所有暂时就没加 😂
    OPML 导入已经在我的支持列表里面啦, 应该可以在后面几个版本加上这个功能
    chanChristin
        3
    chanChristin  
       15 天前
    @gaozihang 评论区规则只能自己写吗?有没有一些通用的规则
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   848 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:57 · PVG 04:57 · LAX 13:57 · JFK 16:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.