# 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] # Verify checksums for a music library song-hash verify [OPTIONS] ``` **Hashing Options:** - `-o, --output `: Sets the name of the checksum file (default: `checksums.txt`). - `-f, --force`: Overwrites existing checksum files if they exist. **Verification Options:** - `-c, --checksum `: 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 ```