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 次下载
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.json
或cookies.txt
的文件并加载它。
安装
Bandsnatch的二进制构建版本可在我们的发布页面上找到,适用于Windows、Mac(ARM & Intel)和Linux(各种架构)。
Nix flake
如果您使用Nix,Bandsnatch可以作为flake提供。您可以通过nix run
或nix 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许可证(见LICENSE或https://opensource.org/licenses/MIT)。
依赖项
~18–33MB
~537K SLoC