获取您的KO-FI帐户的RSS Feed
#发展 #php #rss #blog

大约两年前,我创建了我的KO-FI页面,可以在其中写有关我在业余时间正在从事的个人项目的工作的博客。他们中的大多数涵盖了有关Amiga社区以及Amigaos和Morphos等操作系统的主题。 ko-fi.com是一个不错的平台,易于使用并表达自己。

这些年来,我一直缺少的一件事是任何人关注我的帖子的一种方式,即使他们没有在该平台上注册。最好的方法是使用RSS,但不幸的是,Ko-fi.com没有提供它们。我得到它。他们希望人们注册只是跟随某人并有可能成为客户,但是像Ko-fi.com这样的平台是让人们传达自己喜欢做的​​事情。我认为,每个网站都应使用RSS,因为人们可以使用他们选择的应用程序来了解最新的博客文章。

所以,我必须对此做些事情。我正在寻找一种对我有用的工具。不同的在线应用程序从不提供任何RSS并创建一个网站的网站中获取内容。有些根本没有与ko-fi.com合作,有些则很昂贵,需要每月费用才能获得RSS feed。

最后,我找到了一个名为 RSS-Bridge 的杰出项目,它确实可以完成我需要的事情。我只需要编写一些代码。没什么大不了的。毕竟,我们是开发人员,对吗?

rss-bridge将基于为任何站点开发的桥梁生成供稿。这些桥梁将收集数据并提取所有必要的信息,然后将其转换为各种饲料格式,例如原子或RSS。

rss-bridge基于 php ,并使用 simplehtmldom 将网站dom放到对象上。我需要做的是为ko-fi.com编写桥梁并解析内容。听起来比以前容易。您会看到使用JavaScript XHR请求出现的内容,而将其分解为不同的URL路径。

但是,在此之前,我必须创建一个可以进行编码的开发环境。我使用了Docker,并在本地系统上创建了一个Docker-compose.yml文件来构建容器。起初,我在基于手臂的计算机上做到了这一点,并且出现了第一个问题。尽管RSS-Bridge工作正常,但我无法获取任何数据,原因是Ko-fi.com使用Cloudflare CDN。这是很多人过去遇到的问题。 RSS-Bridge通过使用curl that can impersonate的特殊构建四个主要浏览器:Chrome,Edge,Safari和Firefox来解决该问题。但是不幸的是,该库在基于ARM的系统上的运行不佳,因此我不得不转到我可信赖的Intel Linux计算机。

version: '3'
services:
  rss-bridge:
    container_name: "rssbridge_server"
    image: rssbridge/rss-bridge:latest

我使用VS代码和Docker插件来进入容器中并进行我需要的编码,以便在浏览器上立即反射它们,而无需重建容器。我开始阅读RSS-Bridge documentation并创建了新桥的第一行。所有这些都比晚些时候很容易,更快地完成了基本代码。因此,现在我不得不解析该页面的运行良好,使我可以使用DOM数据。但是主要的ko-fi.com页面没有我需要的所有帖子。我必须在网站上更深入地看待它使用的HTTP请求。很高兴找到一个返回最新博客文章的文章,介绍中的几个单词和主要图像。这是一个不错的开端,在与DOM战斗的几分钟后,我有第一个RSS工作。但是有一些问题。

RSS-Bridge intro

首先,介绍文本很小,只有几句话。其次,帖子日期都是相对的,在过去的几个月之后,它们都是相同的,而无法区分何时发布文章。每个帖子都有像“ 3个月前”这样的约会。不幸的是,该信息在任何地方都不是主文章页面。我决定也尝试解析这一点,并获得更准确的日期和整个文本的第一段。效果很好,但使解析器稍慢一点,因为它不必分析一页,而是必须分析30。 P>

我在一个服务器上设置了一个docker容器。但是我如何将那座桥推在容器内?我检查了该文档和官方的RSS_Bridge Dockerfile,发现有一个入门点脚本检查 /配置文件夹并获取它所找到的任何配置和桥梁文件,将其复制到适当的位置。当创建容器时,这种情况就会发生。因此,我创建了一个卷,然后将这些文件放入主机系统中的配置文件夹中。而且由于我将Traefik用于反向代理,因此我在最后添加了其标签。我不在乎与SSL一起工作,所以我跳过了这些标签。

我重建了容器,一切都完美无缺。

version: '3'
services:
  rss-bridge:
    container_name: "rssbridge_server"
    image: rssbridge/rss-bridge:latest
    volumes:
      - ./config:/config
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.rssbridge_nginx.rule=Host(`rssbridge.walkero.gr`)"

,但我不能停在那儿。应该设置某种缓存,以便在每个RSS请求和禁止使用我的服务器IP的风险下扫描KO-Fi.com网站。 RSS-Bridge支持不同的缓存方式,我选择使用我在Docker-compose.yml文件中设置的memcache。

  memcached:
    container_name: "rssbridge_memcached"
    image: wodby/memcached
    restart: unless-stopped

由于一切都按预期运行,所以我在RSS-Bridge存储库中创建了一个pull request,几个小时后,我的代码合并了,现在每个公共服务器都将拥有一个新的KO-FI桥,供所有人使用。由于这是我自己使用的东西,因此我将确保尽可能长时间维护它。

rss-bridge是一个很好的工具需要与注册系统联系在一起。

RSS-Bridge rss list

如果您对如何使它变得更好的想法或建议,请与我联系,我会尽力使这一实现。如果我的工作对您有用,我很想听到。

哦,我忘了。我的博客的RSS提要是:

本文首先发布在:
https://walkero.gr/blog/get-rss-feed-for-your-ko-fi-account