#音乐 #下载器 #Bandcamp #命令行界面 #命令行工具 #bcdl

应用程序 bandsnatch

为您的 Bandcamp 库提供的命令行批量下载器

7 个版本

0.3.2 2024年7月16日
0.3.1 2023年10月7日
0.3.0 2023年9月30日
0.2.1 2023年3月13日
0.1.1 2022年10月29日

#23音频

每月 35 次下载

MITCC-PDDC 许可证

44KB
820 代码行

bandsnatch

为您的 Bandcamp 库提供的命令行批量下载器。

Bandsnatch 是一款 Rust 工具,可用于一次性下载您所有 Bandcamp 购买的项目,并能在您购买新发行物时多次运行。

此项目深受 Ezwen 的 bandcamp-collection-downloader 启发,我在此之前曾使用过,特别是为了帮助我学习 Rust,同时也添加了一些我想要的改进。

项目状态

此工具目前仍在开发中,因此可能会出现错误和其他奇怪的问题。如果发生任何奇怪的问题或出现故障,请尽可能提供相关信息和复现步骤,以便打开有关此问题的 issue。特别是测试此工具与大型库一起使用的情况,将非常有帮助,以便了解我是否需要在哪些方面进行改进。

如果您是一位正在查看代码的开发人员,请注意,这是我使用 Rust 编写的第一个正式项目,因此代码质量可能不高,尤其是在内存使用方面。如果您有任何改进项目的想法,我将非常乐意听取。

用法

最基本的用法是类似于 bandsnatch run -f <格式> <用户名>,因为它将尝试自动从本地 cookies.json 中获取 Cookie。但如果失败,您可以使用 -c 选项提供 Cookie 文件的路径。

对于更高级的用法,您可以使用 bandsnatch run -h 运行,以获取类似以下输出的结果。

Run Bandsnatch to download your collection

Usage: bandsnatch run [OPTIONS] --format <AUDIO_FORMAT> <USER>

Arguments:
  <USER>  Name of the user to download releases from (must be logged in through cookies) [env: BS_USER=]

Options:
  -f, --format <AUDIO_FORMAT>   The audio format to download the files in [env: BS_FORMAT=] [possible values: flac, wav, aac-hi, mp3-320, aiff-lossless, vorbis, mp3-v0, alac]
  -c, --cookies <COOKIES_FILE>  [env: BS_COOKIES=]
      --debug                   Enables some extra debug output in certain scenarios [env: BS_DEBUG=]
  -d, --dry-run                 Return a list of all tracks to be downloaded, without actually downloading them
  -F, --force                   Ignores any found cache file and instead does a from-scratch download run [env: BS_FORCE=]
  -j, --jobs <JOBS>             The amount of parallel jobs (threads) to use [env: BS_JOBS=] [default: 4]
  -n, --limit <LIMIT>           Maximum number of releases to download. Useful for testing [env: BS_LIMIT=]
  -o, --output-folder <FOLDER>  The folder to extract downloaded releases to [env: BS_OUTPUT_FOLDER=] [default: ./]
  -h, --help                    Print help information

除了这些选项之外,您还可以使用环境变量,其中选项名称以 SCREAMING_SNAKE_CASE 的形式出现,并以 BS_ 前缀开头,这样,如果设置正确,您只需运行 bandsnatch run,它就会自动将您的收藏夹下载到您想要的文件夹中。

示例

bandsnatch run -c ./cookies.json -f flac -o ./Music ovyerus

此操作会将整个音乐收藏夹下载到本地的“音乐”文件夹中,并在同一目录下创建一个 bandcamp-collection-downloader.cache 文件,以便在未来的运行中读取并跳过已检索的项目。

认证

由于Bandsnatch本身不管理Bandcamp的登录,您需要提供认证cookies。对于Firefox用户,您可以使用Cookie Quick Manager扩展提取一个 cookies.json 文件,而在Chrome中,您可以使用Get cookies.txt LOCALLY扩展提取cookies,Bandsnatch也支持Netscape格式。

如果您没有提供--cookies选项,Bandsnatch将尝试自动在本地目录中查找名为cookies.jsoncookies.txt的文件并加载它。

安装

Bandsnatch的二进制构建版本可在我们的发布页面上找到,适用于Windows、Mac(ARM & Intel)和Linux(各种架构)。

Nix flake

如果您使用Nix,Bandsnatch可以作为flake提供。您可以通过nix runnix shell尝试它而无需安装。

nix run github:ovyerus/bandsnatch -- --help
nix shell github:ovyerus/bandsnatch

您可以使用nix profile install将其永久安装,或者将其添加到您的NixOS/Home Manager配置中。

Homebrew

brewinstall ovyerus/tap/bandsnatch

Scoop

scoop bucket add ovyerus https://github.com/Ovyerus/bucket
scoop install bandsnatch

AUR

Bandsnatch还可在AUR上找到。您可以使用您喜欢的AUR辅助工具,或者可以按照以下步骤手动安装:

git clone https://aur.archlinux.org/bandsnatch.git
cd bandsnatch
makepkg -si

NetBSD(非官方)

Bandsnatch也来自官方NetBSD存储库,但不是由我维护。

pkgin install bandsnatch

Crate

cargoinstall bandsnatch

从源代码

拉取此存储库并运行cargo build --release,然后在./target/release/中查找bandsnatch二进制文件。

许可证

本程序采用MIT许可证(见LICENSEhttps://opensource.org/licenses/MIT)。

依赖项

~18–33MB
~537K SLoC