9 个版本 (稳定版)
2.0.1 | 2022年3月3日 |
---|---|
2.0.0 | 2022年2月26日 |
1.2.1 | 2021年9月8日 |
1.2.0 | 2021年5月11日 |
0.8.2 | 2020年7月24日 |
#206 in 音频
每月下载 33 次
410KB
5K SLoC
Shellcaster
Shellcaster 是一个基于终端的播客管理器,使用 Rust 编写。它提供了一个终端 UI(即类似于 ncurses 的界面),允许用户订阅播客源,并同步源以检查新剧集。剧集可以本地下载,用外部媒体播放器播放,并标记为已播放/未播放。通过配置文件可以配置快捷键和其他选项。
安装 shellcaster
在 Arch Linux 上
Arch 用户仓库 (AUR) 中提供了 shellcaster 的包。使用 makepkg -si
(更多信息) 或您喜欢的 AUR 辅助程序安装以下包之一
在其他 Linux 发行版和 MacOS 上
目前唯一的选择是从源码构建。
首先,确保您已安装必要的依赖项
- rust
- gcc
- pkg-config
- libsqlite3-dev
注意
- 这些依赖项的名称可能因您的系统而异。对于
libsqlite3-dev
,您需要 SQLite 的开发头文件,这可能独立于运行时包(例如,带有-dev
后缀)。 - 如果您启用了 shellcaster 的 "native_tls" 功能(默认禁用),您还需要
libssl-dev
,即 OpenSSL 的开发头文件(在 MacOS 上不需要)。 - 如果您启用shellcaster的“sqlite-bundled”功能(默认情况下禁用),则不需要
pkg-config
和libsqlite3-dev
。
接下来,有几种编译程序的方法
- 您可以使用一条命令直接从crates.io安装二进制的最新版本
# for MacOS or Linux
sudo cargo install shellcaster --no-track --root "/usr/local" # add or remove any features with --features
# or for Linux, without needing root permissions
cargo install shellcaster --no-track --root "$HOME/.local"
- 您也可以克隆GitHub仓库并自行编译
git clone https://github.com/jeff-hughes/shellcaster.git
cd shellcaster
cargo build --release # add or remove any features with --features
# for MacOS or Linux
sudo cp target/release/shellcaster /usr/local/bin/
# or for Linux, no root permissions
cp target/release/shellcaster ~/.local/bin
以下是编译时可用功能的列表。
在Windows上
Shellcaster目前不支持Windows,尽管已经做了一些工作来尝试让它工作。但是,Unicode支持较弱,并且在调整屏幕大小时存在问题。您可能使用新的Windows Terminal会更好,但这尚未经过测试。如果您是Windows用户并想帮助解决这些错误,欢迎提交pull请求!
编译功能列表
默认情况下,仅启用native_certs
功能。以下是功能的完整列表
-
sqlite_bundled
:当禁用时,Rust将尝试将shellcaster与您系统上已存在的SQLite头文件链接。如果启用,Rust将使用源代码构建SQLite并将其与shellcaster捆绑在一起。捆绑会导致应用程序大小增加,但如果您希望使用与系统上不同的SQLite版本,或者在安装SQLite更困难的情况下,这可能更合适。 -
native_tls
:默认情况下,shellcaster使用rustls crate来启用TLS支持(即https URL)。这可能导致某些使用较早版本TLS(低于TLS v1.2)的播客源出现问题。如果您发现某些源无法更新,您可以尝试启用native_tls
功能,这将使用native-tls crate,它使用Linux上的OpenSSL、MacOS上的Secure Transport和Windows上的SChannel。 -
native_certs
:Shellcaster将使用您操作系统的受信任证书存储中的受信任证书根来验证TLS证书。关闭此功能将使用捆绑的Mozilla根程序副本,shellcaster重新编译时才会更新。因此,建议启用此功能。
在编译时指定不同的功能,以下格式
cargo install --no-track --no-default-features --features "<feature1>,<feature2>" --root "$HOME/.local"
使用cargo build
时,格式相同
cargo build --release --no-default-features --features "<feature1>,<feature2>"
cp target/release/shellcaster ~/.local/bin/
运行shellcaster
非常简单!在您的终端中运行
shellcaster
请注意,如果您将shellcaster安装到了不同的位置,请确保已将此位置添加到您的$PATH
export PATH="/path/to/add:$PATH"
导入/导出播客
Shellcaster支持从其他播客管理器导入OPML文件。如果您可以从其他播客管理器导出OPML文件,您可以使用以下命令导入此文件
shellcaster import -f /path/to/OPML/file.opml
如果将-r
标志添加到此命令,它将覆盖shellcaster中当前存储的任何现有播客。您还可以通过不指定-f <file>
来从stdin将数据传递到shellcaster import
。
您可以使用以下命令从shellcaster导出OPML文件
shellcaster export -f /path/to/output/file.opml
您还可以通过不指定-f <file>
来导出到stdout;例如,此命令等效于
shellcaster export > /path/to/output/file.opml
配置shellcaster
如果您想更改配置设置,可以从以下位置复制示例 config.toml
文件:这里。下载它,编辑成您喜欢的样子,并将其放置在以下位置
# on Linux
mkdir -p ~/.config/shellcaster
cp config.toml ~/.config/shellcaster/
# on MacOS
mkdir -p ~/Library/Preferences/shellcaster
cp config.toml ~/Library/Preferences/shellcaster/
或者,您可以将 config.toml
放在您选择的地方,并在运行时指定位置
shellcaster -c /path/to/config.toml
上面的示例文件提供了注释,这些注释应该会引导您了解所有可用选项。如果配置文件中未出现任何字段,它将使用那些注释中指定的默认值填充。为了方便起见,以下列出了默认值。
配置选项
download_path:
- 指定下载的播客剧集将存储的位置。
- 默认值
- 在 Linux 上:$XDG_DATA_HOME/shellcaster/ 或 $HOME/.local/share/shellcaster/
- 在 Mac 上:$HOME/Library/Application Support/shellcaster/
- 在 Windows 上:C:\Users\username\AppData\Local\shellcaster\
play_command:
- 用于播放剧集的命令。使用 "%s" 来指示文件/URL 将被输入到命令中。请注意,shellcaster 不包含原生媒体播放器 -- 它只是将文件路径/URL 传递给指定的命令,而不进行进一步的检查,以确保其成功或失败。这个过程是在 后台 启动的,因此请确保将其发送到具有某种 GUI 控制的程序,以便您可以对播放进行控制。
- 默认值:"vlc %s"
download_new_episodes:
- 配置在同步播客时找到新剧集时发生的情况。有效选项
- "always" 将自动下载所有新剧集;
- "ask-selected" 将打开一个弹出窗口,让您选择要下载的剧集,默认全部选中;
- "ask-unselected" 将打开一个弹出窗口,让您选择要下载的剧集,默认不选中;
- "never" 从不自动下载新剧集。
- 默认值:"ask-unselected"
simultaneous_downloads:
- 同时下载的最大文件数。设置得太高可能会导致网络请求被拒绝。一个好的通用指南是将此设置为计算机上的处理器核心数。
- 默认值:3
max_retries:
- 尝试连接到 URL 以同步播客或下载剧集的最大次数。
- 默认值:3
默认键绑定
键 | 操作 |
---|---|
? | 打开帮助窗口 |
箭头键 / h,j,k,l | 导航菜单 |
Shift+K | 向上 1/4 页 |
Shift+J | 向下 1/4 页 |
PgUp | 向上翻页 |
PgDn | 向下翻页 |
a | 添加新的源 |
q | 退出程序 |
s | 同步选定的源 |
Shift+S | 同步所有源 |
Enter / p | 播放选定的剧集 |
m | 将选定的剧集标记为已播放/未播放 |
Shift+M | 将所有剧集标记为已播放/未播放 |
d | 下载选定的剧集 |
Shift+D | 下载所有剧集 |
x | 删除下载的文件 |
Shift+X | 删除所有下载的文件 |
r | 从列表中删除选定的源/剧集 |
Shift+R | 从列表中删除所有源/剧集 |
1 | 切换播放/未播放过滤器 |
2 | 切换已下载/未下载过滤器 |
注意:操作可以映射到多个键(例如,"Enter" 和 "p" 都会播放剧集),但单个键不能执行多个操作(例如,您不能将 "d" 设置为下载和删除剧集)。
可定制的颜色
您可以使用内置的终端颜色或(如果您的终端支持)可定制的颜色来设置应用程序中的颜色。有关如何指定这些颜色的详细信息,请参阅 config.toml 中的 "colors" 部分!
无界面的同步
一些用户可能希望定期自动同步他们的播客,例如每天早晨。可以使用shellcaster sync
子命令来实现,无需打开UI,并且会同步数据库中所有播客的完整内容。这可以用来设置cron作业或systemd计时器,例如。请参考这些系统的相关文档,了解如何设置您选择的计划。
贡献
欢迎其他人的贡献!如果您希望贡献,请随意克隆仓库并提交pull请求。在编辑时,请确保您处于develop
分支,因为应用的开发正在进行中。只有提交到develop
分支的pull请求才会被合并,因此您可以在最初就避免合并冲突。
感谢以下这些优秀人士做出的贡献:a-kenji,dougli1sqrd,dwvisser,thunderbiscuit
为什么是“shellcaster”?
我试图在“播客”这个词上玩点花样,我非常喜欢“shell”这个词,有几个原因。“shell”是“pod”的同义词。终端也被称作shell(而shellcaster是一个基于终端的程序)。此外,这个程序是用Rust编写的,其吉祥物是Ferris蟹。最后,我个人非常喜欢“shellcaster”听起来很像“spellcaster”,所以当你使用这个程序时,可以感觉自己像是一个巫师...
依赖项
~35–50MB
~884K SLoC