#podcast #tui #terminal #media-player #curses #user-interface #config-file

app shellcaster

一个基于终端的播客管理器,用于订阅和播放播客

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 次

GPL-3.0-or-later

410KB
5K SLoC

shellcaster logo: Ferris the crab with headphones

Shellcaster

Shellcaster 是一个基于终端的播客管理器,使用 Rust 编写。它提供了一个终端 UI(即类似于 ncurses 的界面),允许用户订阅播客源,并同步源以检查新剧集。剧集可以本地下载,用外部媒体播放器播放,并标记为已播放/未播放。通过配置文件可以配置快捷键和其他选项。

screenshot of shellcaster

安装 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-configlibsqlite3-dev

接下来,有几种编译程序的方法

  1. 您可以使用一条命令直接从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"
  1. 您也可以克隆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-kenjidougli1sqrddwvisserthunderbiscuit

为什么是“shellcaster”?

我试图在“播客”这个词上玩点花样,我非常喜欢“shell”这个词,有几个原因。“shell”是“pod”的同义词。终端也被称作shell(而shellcaster是一个基于终端的程序)。此外,这个程序是用Rust编写的,其吉祥物是Ferris蟹。最后,我个人非常喜欢“shellcaster”听起来很像“spellcaster”,所以当你使用这个程序时,可以感觉自己像是一个巫师...

依赖项

~35–50MB
~884K SLoC