20 个版本
0.3.0 | 2024年7月11日 |
---|---|
0.3.0-rc.2 | 2024年7月7日 |
0.2.6 | 2024年6月18日 |
0.2.5 | 2024年5月23日 |
0.1.6 | 2024年2月28日 |
739 在 命令行工具 中排名
每月下载量 281
485KB
12K SLoC
Syndicationd
Syndicationd(synd
) 是一个基于 feed-rs 和 ratatui 的 TUI 内容订阅查看器。
目录
功能
- 订阅 RSS/Atom 内容
- 处理 GitHub 通知
安装
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 进行了配置。基本信号(跟踪、指标、日志)在上发布
删除缓存和日志
认证凭据被缓存。要删除它们,请执行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://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