RSS 服务器端读取器

主要观点:作者喜欢 RSS 理念,但之前的 RSS 阅读器都不合适,于是自己实现了一个,采用了服务器端渲染(SSR)的技术,此列表主要供自己使用,也对部分博客读者有兴趣,且有助于提升所关注博客的页面排名。
关键信息

  • 最初尝试在浏览器本地存储状态的客户端阅读器因 CORS 失败,因为客户端 JavaScript 只能获取自身页面所在域的资源,而 feed hosted 在其他域。
  • 现在将个性化 feed 作为博客构建过程的一部分,hosted 在[https://matklad.github.io/blo...],源文件是blogroll.txt,用简单的链接列表形式,每行一个链接,最初尝试用 OPML 但太复杂不便手动修改。
  • 用[https://github.com/MikaelPort...]库获取 blogroll 的代码,包含blogroll函数和blogroll_feed函数,blogroll函数获取链接列表并处理每个 feed 的条目,blogroll_feed函数获取 feed 内容并处理条目,只取最新的 3 个帖子。
  • 构建过程中将数据转换为 HTML 的代码在BlogRoll函数中,通过处理帖子列表生成 HTML 列表。
  • GitHub actions 每天午夜重建 blogroll。
    重要细节
  • blogroll函数先读取content/blogroll.txt文件得到链接列表,然后用Promise.all并行获取每个链接的 feed 内容,将所有条目合并后按时间倒序排序,返回前 3 个帖子。
  • blogroll_feed函数用fetch获取 feed 内容,用parseFeed解析,处理每个条目获取标题、链接和日期,只取最新的 3 个帖子。
  • BlogRoll函数中domain函数用于获取链接的域名,list_items通过映射帖子列表生成 HTML 列表项,包含帖子的标题、日期和链接。
  • GitHub actions 的配置,在pushmaster分支或每天午夜触发CI任务,在 Ubuntu 上运行,安装 deno,执行deno task build --blogroll,上传构建结果到 out/www 目录,然后部署到 pages。
  • 还提到另一个相关模式是维护所有时间喜欢的链接列表:[https://matklad.github.io/lin...]。
阅读 7
0 条评论