#feed #rss #atom-feed #tui #atom #content #log-file

bin+lib synd-term

终端内容订阅查看器

20 个版本

0.3.0 2024年7月11日
0.3.0-rc.22024年7月7日
0.2.6 2024年6月18日
0.2.5 2024年5月23日
0.1.6 2024年2月28日

739命令行工具 中排名

Download history 20/week @ 2024-04-09 425/week @ 2024-04-16 117/week @ 2024-04-23 147/week @ 2024-04-30 51/week @ 2024-05-07 97/week @ 2024-05-21 1/week @ 2024-05-28 144/week @ 2024-06-18 113/week @ 2024-07-02 164/week @ 2024-07-09 4/week @ 2024-07-16

每月下载量 281

MIT/Apache

485KB
12K SLoC

Syndicationd

CI Release Coverage

Demo

Syndicationd(synd) 是一个基于 feed-rsratatui 的 TUI 内容订阅查看器。

目录

功能

安装

nix

nix profile install github:ymgyt/syndicationd/synd-term-v0.3.0

arch linux

pacman -S syndicationd

brew

brew install ymgyt/homebrew-syndicationd/synd-term

shell

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ymgyt/syndicationd/releases/download/synd-term-v0.3.0

cargo

cargo install synd-term --locked

npm

npm install @syndicationd/synd-term

powershell

powershell -c "irm https://github.com/ymgyt/syndicationd/releases/download/synd-term-v0.3.0

docker

docker run -it ghcr.io/ymgyt/synd-term

预构建的二进制文件

预构建的二进制文件可在 GitHub 发布 中找到。

使用方法

synd 将启动 TUI 应用程序。

点击显示完整选项列表
Usage:

Commands:
  clean   Clean cache and logs
  check   Check application conditions
  export  Export subscribed feeds
  help    Print this message or the help of the given subcommand(s)

Options:
      --log <LOG>              Log file path [env: SYND_LOG_PATH=] [default:
                               /home/ymgyt/.local/share/synd/synd.log]
      --cache-dir <CACHE_DIR>  Cache directory [default: /home/ymgyt/.cache/synd]
      --theme <THEME>          Color theme [env: SYND_THEME=] [default: ferra] [possible values: ferra,
                               solarized-dark, helix]
  -h, --help                   Print help
  -V, --version                Print version

Api options:
      --endpoint <ENDPOINT>              `synd_api` endpoint [env: SYND_ENDPOINT=] [default:
                                         https://api.syndicationd.ymgyt.io:6100]
      --client-timeout <CLIENT_TIMEOUT>  Client timeout [default: 30s]

Feed options:
      --categories <CATEGORIES TOML PATH>  categories.toml path
      --entries-limit <ENTRIES_LIMIT>      Feed entries limit to fetch [default: 200]

GitHub options:
  -G, --enable-github-notification  Enable GitHub notification feature [env: SYND_ENABLE_GH=]
                                    [aliases: enable-gh]
      --github-pat <GITHUB_PAT>     GitHub personal access token to fetch notifications [env:
                                    SYND_GH_PAT]

身份验证

syndicationd 在后端维护状态(例如已订阅的内容),因此需要身份验证来发起请求。
目前,GitHub 和 Google 支持作为授权服务器/ID 提供商。syndicationd 所需的唯一作用域是 user:email(GitHub)或 email(Google)来验证用户的电子邮件地址。用户的电子邮件地址在哈希后仅用作标识符,永远不会存储。更多信息请参阅 隐私政策

快捷键映射

点击显示快捷键映射表
描述
k/j 上/下移动
gg 转到第一项
ge 转到末尾
Tab 切换标签
Enter 打开条目/内容
a 在“内容”标签页中添加内容订阅
e 编辑订阅的内容(在“内容”标签页中)
d 删除订阅的内容(在“内容”标签页中)
r 重新加载条目/内容
h/l 更改需求过滤器
c 激活类别过滤器(按Esc键取消激活)
+ 激活所有类别(在类别过滤器上)
- 取消激活所有类别(在类别过滤器上)
/ 激活关键词搜索(按Esc键取消激活)
q 退出应用

GitHub通知

描述
d 标记为已完成
D 标记所有为已完成
u 取消订阅
f 打开通知过滤器(按Esc键应用)

有关更多详细信息,请参阅 keymap/default.rs

订阅源

要订阅源,请按"Tab"键移动到"源"选项卡,然后按"a"键。
synd 使用 edit 启动用户的编辑器(如git提交)。
要订阅的源应按以下格式输入
需求 类别 URL

关闭编辑器时,订阅请求将发送到API。

需求

需求 表示源的重要性。
这使用了对 RFC2119 的类比,可以取以下值之一

  • MUST:最重要,必须阅读。
  • SHOULD:其次重要,除非有特殊原因不读,否则应阅读。
  • MAY:最不重要,可以阅读。

类别

类别 表示源的分类。您可以指定任何值作为分类。`synd` 识别的分类值定义在 categories.toml 中。您可以使用 `--categories` 标志覆盖默认值。

编辑已订阅的源

要更改已订阅的源的需求或类别,请选择"源"选项卡中的目标源,然后按"e"键。

取消订阅源

要取消订阅源,请选择目标源并按"d"键。

过滤源/条目

源和条目可以按以下方式过滤

需求

要基于指定的需求过滤,请按"h/l(左/右)"键。
如果设置为 MUST,则仅显示标记为MUST的源和条目。设置为SHOULD将显示标记为MUST和SHOULD的源和条目。如果设置为MAY,则显示所有源和条目。

按类别

要按类别过滤,请按"c"键。这将显示一个标签,其中包含控制每个类别激活/取消激活的键,允许您切换类别的可见性。
按"-"键将取消激活所有类别,按"+"键将激活所有类别。

按"Esc"键可以退出过滤类别模式。
类别图标可以在 categories.toml 中指定

导出已订阅的源

要导出已订阅的源,请执行 synd export 命令。
您可以使用 synd export --print-schema 检查要导出的数据的JSON模式。

点击以显示导出JSON模式
{
  "$schema": "https://json-schema.fullstack.org.cn/draft-07/schema#",
  "title": "Export",
  "type": "object",
  "required": [
    "feeds"
  ],
  "properties": {
    "feeds": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/ExportedFeed"
      }
    }
  },
  "definitions": {
    "ExportedFeed": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "title": {
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "type": "string"
        }
      }
    }
  }
}

GitHub 通知

要启用GitHub通知功能,请指定 --enable-github-notification | -G 标志或设置环境变量 SYND_ENABLE_GH=true
启用GitHub通知功能时,需要GitHub个人访问令牌(PAT)。请使用 --github-pat 标志或环境变量 SYND_GH_PAT 指定PAT。
对于GitHub通知,与源不同,synd-api不使用。

PAT作用域

经典令牌

需要repo作用域。更多详情,请参阅关于 GitHub 通知

细粒度访问令牌

需要“元数据”仓库权限(读取)和“通知”用户权限(读取)。
更多详情,请参阅列出已认证用户的通知
由于标记通知为已做的 API 不支持细粒度访问令牌,使用此功能需要 c 类令牌。

日志文件

日志文件路径基于ProjectDirs::data_dir()
请参阅synd --help中的--log标志以获取默认输出位置。

您可以使用环境变量SYND_LOG修改日志指令。(例如,SYND_LOG=synd=debug

主题

可以使用--theme标志更改主题。请参阅帮助文档以了解可以指定的值。

后端 API

默认情况下,synd使用https://api.syndicationd.ymgyt.io作为后端 API(托管在我的家庭树莓派上)。
要更改端点,请指定--endpoint标志

托管 API 已通过 OpenTelemetry 进行了配置。基本信号(跟踪、指标、日志)在Grafana上发布

删除缓存和日志

认证凭据被缓存。要删除它们,请执行synd clean

检查应用程序状态

synd check [--format (human|json)]返回当前应用程序状态。

synd check --format json | from json
╭───────┬─────────────────────────────────────────╮
       │ ╭─────────────┬────────────────────╮    │
 api   │ │ description │ health of synd-api │    │
       │ │ status      │ Pass               │    │
       │ │ version     │ 0.1.9              │    │
       │ ╰─────────────┴────────────────────╯    │
 cache │ /home/ferris/.cache/synd                │
 log   │ /home/ferris/.local/share/synd/synd.log │
╰───────┴─────────────────────────────────────────╯

许可协议

此项目可在Apache 2.0 许可证MIT 许可证的条款下获得。

订阅源提示

我知道的一些订阅源提示。

  • openrss.org/添加到 URL 的开头以获取其 RSS 订阅源。例如,对于https://example.ymgyt.io,它将是https://openrss.org/example.ymgyt.io

  • 您可以在 GitHub 上获取各种更新作为订阅源。

    • 要获取仓库的版本,请指定releases.atom。例如,要获取 syndicationd 的版本,请指定https://github.com/ymgyt/syndicationd/releases.atom
    • 对于标签,它是https://github.com/ymgyt/syndicationd/tag.atom
  • .rss添加到 Reddit URL 的末尾允许您检索订阅源。例如,对于https://www.reddit.com/r/HelixEditor/,它将是https://www.reddit.com/r/HelixEditor.rss

点击显示更多提示
  • .ja.atom 添加到 connpass 群组 URL 的末尾以获取事件源。例如,https://opentelemetry.connpass.com/ja.atom

  • 为 Hatena 博客添加 /feed

如果您正在寻找源,以下是我的推荐。

点击以显示列表

针对 Rust 用户

点击以显示表格
URL
Rust 这周 https://this-week-in-rust.org/atom.xml
Rust 博客 https://blog.rust-lang.net.cn/feed.xml
Rust 博客内部 https://blog.rust-lang.net.cn/inside-rust/feed.xml
RustSec 咨询 https://rustsec.org/feed.xml
seanmonstar https://seanmonstar.com/rss
Mara 的博客 https://blog.m-ou.se/index.xml
没有船,梦想就会干涸 https://without.boats/index.xml
fasterthanli.me https://fasterthanli.me/index.xml
Orhun 的博客 https://blog.orhun.dev/rss.xml
axo 博客 https://blog.axo.dev/rss.xml
Kbzol 的博客 https://kobzol.github.io/feed.xml
小步骤 https://smallcultfollowing.com/babysteps/
COCl2 的博客主页 https://blog.cocl2.com/index.xml

针对 Nix 用户

点击以显示表格
URL
这个可爱的世界 https://thiscute.world/en/index.xml
确定系统 https://determinate.systems/rss.xml

针对可观察性

点击以显示表格
URL
可观察性新闻 https://buttondown.email/o11y.news/rss
Opentelemetry 博客 https://opentelemetry.io/blog/2024/index.xml
eBPF 博客 https://ebpf.io/blog/rss.xml

针对 Kubernetes 用户

点击以显示表格
URL
Kubernetes 博客 https://kubernetes.ac.cn/feed.xml
Kubernetes 官方 CVE https://kubernetes.ac.cn/docs/reference/issues-security/official-cve-feed/feed.xml
CNCF https://www.cncf.io/feed/

杂项

点击以显示表格
URL
终端宝库 https://terminaltrove.com/blog.xml

依赖关系

~51–70MB
~1.5M SLoC