Initial Commit
This commit is contained in:
commit
844733d5d5
8 changed files with 2099 additions and 0 deletions
53
README.md
Normal file
53
README.md
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# 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
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue