53 lines
No EOL
1.7 KiB
Markdown
53 lines
No EOL
1.7 KiB
Markdown
# song-hash
|
|
|
|
A blazing-fast Rust CLI for generating and verifying BLAKE3 checksums of large music libraries with a tiny binary footprint.
|
|
|
|
## Features
|
|
- Generates hashes using the modern and extremely fast BLAKE3 algorithm
|
|
- Hashes and verifies many folders at once using all available CPU cores
|
|
- Creates a single `checksums.txt` file per album, leaving artist folders clean
|
|
- Never overwrites existing checksums unless you explicitly use `--force`
|
|
- Tiny release binary (~550KB)
|
|
|
|
## Installation
|
|
```bash
|
|
cargo build --release
|
|
```
|
|
|
|
## Usage
|
|
```bash
|
|
# Generate checksums for a music library
|
|
song-hash hash [OPTIONS] <MUSIC_ROOT>
|
|
|
|
# Verify checksums for a music library
|
|
song-hash verify [OPTIONS] <MUSIC_ROOT>
|
|
```
|
|
|
|
**Hashing Options:**
|
|
- `-o, --output <NAME>`: Sets the name of the checksum file (default: `checksums.txt`).
|
|
- `-f, --force`: Overwrites existing checksum files if they exist.
|
|
|
|
**Verification Options:**
|
|
- `-c, --checksum <NAME>`: Specifies the name of the checksum file to find and verify (default: `checksums.txt`).
|
|
|
|
## Examples
|
|
Hash your entire music collection (non-destructive):
|
|
```bash
|
|
song-hash hash "D:\Music"
|
|
```
|
|
Overwrite existing checksum files:
|
|
```bash
|
|
song-hash hash -f "D:\Music"
|
|
```
|
|
Verify every album under `Downloads`:
|
|
```bash
|
|
song-hash verify "C:\Users\You\Downloads"
|
|
```
|
|
|
|
## What gets hashed?
|
|
|
|
Only audio files (`flac`, `mp3`, `wav`, `ogg`, `opus`, `m4a`, `aac`, `alac`, `ape`, `wma`, `aif`, `aiff`, `pcm`, `mka`) that live **directly inside** each album directory. Artist folders that contain only sub-folders are skipped. The checksum file format is just two columns: **hash** & **filename**.
|
|
```
|
|
b818e0e88f3b… 01 - Intro.flac
|
|
7c6a21d82f4c… 02 - Track.flac
|
|
``` |