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

11次阅读

共计 1069 个字符,预计需要花费 3 分钟才能阅读完成。

我自己使用过很多 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 += `
        
[风鈴 - RSS 订阅, 通知, 提醒] 为了满足我自己的订阅需求而开发的 RSS 阅读管理工具

${username}

${time}

${content}

`; } return html; } catch (e) {$alert(e); } });

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

正文完
 0