#rss #atom-feed #feed #rss-reader #atom

bin+lib feedlynx

在您的 RSS 阅读器中收集要阅读或稍后观看的链接

5 个版本

0.2.0 2024 年 7 月 31 日
0.1.0 2024 年 7 月 28 日
0.1.0-pre.52024 年 7 月 22 日
0.1.0-pre.22024 年 7 月 1 日

#246 in Web 编程

Download history 139/week @ 2024-06-29 12/week @ 2024-07-06 245/week @ 2024-07-20 264/week @ 2024-07-27 12/week @ 2024-08-03

521 每月下载量

MIT/Apache

65KB
1K SLoC


Feedlynx

Feedlynx 帮助您收集要阅读或稍后观看的链接。它生成您收集的链接的 RSS 源,并在 BSD、Linux、macOS、Windows 等操作系统上运行。


Feedlynx 在磁盘上管理 Atom 源。每次收到添加链接的请求时,都会从 URL 获取页面以确定标题和描述。然后使用这些信息在源中添加新的条目。如果链接来自 YouTube,则会生成视频的嵌入。

安装

预编译的二进制文件

为多个平台提供了预编译的二进制文件

  • FreeBSD 13+ amd64
  • Linux x86_64
  • MacOS Universal
  • Windows x86_64

请查看 最新版本 中的下载链接。

从源代码构建

请参阅下面的 从源代码构建

集成

浏览器扩展

请参阅 https://github.com/wezm/feedlynx-ext 以获取浏览器扩展。

Apple 快捷指令 (iOS、iPadOS、macOS)

此快捷指令允许您使用系统共享面板将链接添加到 Feedlynx。

https://www.icloud.com/shortcuts/2bc22a709551404a93d55aaf6b0615b4

使用方法

feedlynx path/to/feed.xml

Feedlynx 需要设置两个环境变量

  • FEEDLYNX_PRIVATE_TOKEN 用于对添加新链接的请求进行身份验证。
  • FEEDLYNX_FEED_TOKEN 用于生成源路径。

这两个令牌必须至少为 32 个字符长且难以猜测。可以使用 feedlynx gen-token 生成合适的值,该命令将打印一个随机生成的令牌。

以下环境变量可以设置(可选)

  • FEEDLYNX_ADDRESS —— 要提供的服务地址,默认 127.0.0.1
  • FEEDLYNX_PORT —— 要提供的服务端口,默认 8001
  • FEEDLYNX_LOG —— 控制日志级别和过滤。

使用 feedlynx 与源文件路径启动 feedlynx,以启动服务器。如果文件不存在,则会创建它。服务器启动时,会打印出服务器上的源路径。这将用于在您的订阅器中订阅源。

注意:订阅源最多包含50条项目,当添加新项目时,较旧的项目将被删除。添加此限制是为了阻止订阅源无限增长,因为Feedlynx无法知道何时读取了项目。RSS阅读器需要在有新项目时下载和处理整个订阅源,因此设置上限有助于限制这项工作的规模和范围。

示例

FEEDLYNX_PRIVATE_TOKEN=ExampleExampleExampleExample1234 \
FEEDLYNX_FEED_TOKEN=FeedFeedFeedFeedFeedFeedFeedFeed \
feedlynx feed.xml
[2024-06-24T08:52:11Z INFO  feedlynx] HTTP server running on: http://127.0.0.1:8001
[2024-06-24T08:52:11Z INFO  feedlynx::server] feed available at /feed/FeedFeedFeedFeedFeedFeedFeedFeed

如果这个Feedlynx实例托管在 example.com 上,订阅源的URL将是 https://example.com/feed/FeedFeedFeedFeedFeedFeedFeedFeed

在Windows PowerShell终端中,上面的示例看起来可能像这样

powershell -Command { $env:FEEDLYNX_PRIVATE_TOKEN="ExampleExampleExampleExample1234"; $env:FEEDLYNX_FEED_TOKEN="FeedFeedFeedFeedFeedFeedFeedFeed"; feedlynx.exe feed.xml }

日志记录

日志记录通过 FEEDLYNX_LOG 环境变量进行控制。日志级别从最不详细到最详细依次是

  • off(无日志)
  • 错误
  • 警告
  • 信息
  • 调试
  • 跟踪

默认日志级别是 info。要将日志级别更改为 debug,使用 FEEDLYNX_LOG=debugFEEDLYNX_LOG 变量还支持过滤。例如,要仅显示来自 feedlynxtrace 消息(而不显示它所使用的某些库的消息),您将指定: FEEDLYNX_LOG=trace=feedlynx。有关更多详细信息,请参阅env_logger文档

debug 级别,Feedlynx将为每个接收到的请求打印类似Web服务器样式的行。

[2024-06-24T07:48:39Z DEBUG feedlynx::server] 127.0.0.1:50202 "GET /feed/FeedFeedFeedFeedFeedFeedFeedFeed" 200 "curl/8.8.0"

这包括远程地址、请求方法、路径、响应状态码和客户端用户代理。

API

服务器公开了三个端点

  • GET / — 显示有关Feedlynx服务器的简要页面。
  • POST /add — 添加新链接。需要以 application/x-www-form-urlencoded(Web表单)格式发送正文。字段
    • url(必需)— 要添加的链接。
    • token(必需)— FEEDLYNX_PRIVATE_TOKEN 的值。
    • title(可选)— 链接的标题。
  • GET /feed/<FEEDLYNX_FEED_TOKEN> — 生成的订阅源。使用此链接在您的订阅源阅读器中订阅订阅源。

cURL 示例

以下cURL命令将 https://github.com/wezm/feedlynx 添加到Feedlynx订阅源

curl -d 'url=https://github.com/wezm/feedlynx' \
     -d 'token=ExampleExampleExampleExample1234' \
     https://127.0.0.1:8001/add

从源代码构建

最低支持的Rust版本 1.72.1

Feedlynx是用Rust实现的。有关安装工具链的说明,请参阅Rust网站安装说明

从Git Checkout或发布归档

使用以下命令构建二进制文件

cargo build --release --locked

二进制文件将位于 target/release/feedlynx

从crates.io

cargo install feedlynx

编译时选项(Cargo功能)

Feedlynx支持以下编译时选项

  • rust-tls(默认):使用 rust-tls 包来处理TLS连接。
  • native-tls:使用 native-tls 包来处理TLS连接。在Windows上构建时,这可能是一个更好的选项。

要使用 native-tls 构建,按如下方式调用Cargo

cargo build --release --locked --no-default-features --features native-tls

如果为操作系统注册表打包Feedlynx,使用native-tls可能是有意义的。在Linux和BSD系统上,这将添加对OpenSSL的依赖。

使用容器(Docker或Podman)

仓库中包含一个Dockerfile。可以像这样构建一个轻量级的容器镜像

docker build -t feedlynx .

容器期望在/data中找到feed路径,因此我们可以使用卷挂载以实现持久存储

docker run -p 127.0.0.1:8001:8001 -v ./data:/data \
  -e FEEDLYNX_PRIVATE_TOKEN=ExampleExampleExampleExample1234 \
  -e FEEDLYNX_FEED_TOKEN=FeedFeedFeedFeedFeedFeedFeedFeed /data/feed.xml

然后可以在https://127.0.0.1:8001访问应用程序,就像它在容器外运行一样。如果使用Podman,只需将docker命令替换为podman

致谢

Feedlynx根据Apache 2.0许可证在以下项目的条款下整合了代码

可爱的Feedlynx标志由@DiDoesDigital绘制。

许可证

该项目根据您选择的双许可协议

任意选择。

依赖关系

~7–19MB
~336K SLoC