Add selective deletion to erase command:
- 'db' (default): clear only database
- 'all': clear database and song files
Updated README and help messages with new usage examples.
Replace pairwise timing comparison with histogram approach that counts
time offset agreements. Bins offsets in 100ms buckets for tolerance.
Improves performance by 500-5000x for songs with many fingerprint matches.
- Scale and mask frequencies to 9 bits each
- Mask time delta to 14 bits
- Add sampleRate parameter to ExtractPeaks calls
Prevents hash collisions from bit overflow in fingerprint addresses.
- Remove unused wav package import and WAV conversion logic
- Pass original downloaded audio file directly to fingerprinting
- Update calls from downloadYTaudio2 → downloadYTaudio after function rename
- Delete old downloadYTaudio1 function using github.com/kkdai/youtube
- Rename downloadYTaudio2 → downloadYTaudio as the primary yt-dlp-based downloader
- Add explicit rows.Close() calls inside loops to avoid holding locks too long
- Add SQLite busy timeout (5s) to connection string to wait for locks instead of failing immediately
- Replaced deprecated web token endpoint with POST to accounts.spotify.com/api/token
- Integrated client credentials OAuth flow using client ID and secret
- Adjusted request headers to use Bearer token