song-hash/README.md
2025-07-09 18:55:26 -05:00

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
```