Commit graph

337 commits

Author SHA1 Message Date
Chigozirim Igweamaka
a6507e8f1e
Update README.md 2025-11-19 12:59:13 -08:00
Chigozirim Igweamaka
e825099e17
Merge pull request #44 from cgzirim/development
Fix Critical Audio Fingerprinting Algorithm Bugs
2025-11-19 12:43:33 -08:00
Chigozirim Igweamaka
939a11a5cc
Update README.md 2025-11-19 12:42:51 -08:00
Chigozirim Igweamaka
9886871070 feat(erase): add db/all subcommands with db as default
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.
2025-11-19 21:30:48 +01:00
Chigozirim Igweamaka
e9fc155153
Update README.md 2025-11-19 08:04:13 -08:00
Chigozirim Igweamaka
6a000f6d72 Update app name 2025-11-19 16:59:24 +01:00
Chigozirim Igweamaka
91ce362e7a update README 2025-11-19 16:55:14 +01:00
Chigozirim Igweamaka
a255d495a3 feat(save): add concurrent file processing for batch song imports 2025-11-19 16:54:31 +01:00
Chigozirim Igweamaka
ced4fc7ee8 perf(shazam): optimize timing analysis from O(n²) to O(n)
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.
2025-11-19 16:52:55 +01:00
Chigozirim Igweamaka
7104a1a7bc fix(fingerprint): prevent address overflow with bit masking
- 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.
2025-11-19 16:51:00 +01:00
Chigozirim Igweamaka
e3a35ef1eb fix(spectrogram): correct STFT and peak extraction algorithm
- Fix frame calculation with proper sliding window iteration
- Change hop size to windowSize/2 for 50% overlap
- Return magnitude spectrum instead of complex values
- Fix Peak time/frequency calculations using proper frame-based indexing
- Add Hz conversion using frequency resolution
- Remove incorrect frequency-based time calculations
2025-11-19 16:47:01 +01:00
Chigozirim Igweamaka
6f1111eb35 refactor(downloader): remove WAV conversion step and update audio download function
- 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
2025-11-19 16:44:06 +01:00
Chigozirim Igweamaka
95218512a6 refactor(youtube): remove deprecated kkdai/youtube code and unify audio download method
- Delete old downloadYTaudio1 function using github.com/kkdai/youtube
- Rename downloadYTaudio2 → downloadYTaudio as the primary yt-dlp-based downloader
2025-11-19 16:42:46 +01:00
Chigozirim Igweamaka
ae6e7a3805 Update WASM load path to fingerprint.wasm 2025-11-19 16:41:57 +01:00
Chigozirim Igweamaka
e299b9bda5 chore: update .dockerignore 2025-11-19 16:41:02 +01:00
Chigozirim Igweamaka
8dcae2456b chore(docker-compose): update compose config. 2025-11-19 16:40:37 +01:00
Chigozirim Igweamaka
28c7a7d4d0 feat(docker): overhaul Dockerfile for multi-stage build and production runtime
- Add multi-stage builds for React frontend and Go backend
- Use node:20-alpine and golang:1.24-alpine for slimmer build environments
- Switch to `/app` directory structure and improve COPY paths
- Use `npm ci` for deterministic frontend installs
- Add Go build optimizations with stripped binaries
- Introduce final Alpine runtime image with ffmpeg, python3, yt-dlp
- Add HEALTHCHECK for backend service availability
- Add non-root runtime user for improved security
- Create necessary app directories with proper permissions
- Update CMD to run Go server with explicit args
2025-11-19 16:39:07 +01:00
Chigozirim Igweamaka
8b1c9af8c1 Remove .env example from project's root 2025-11-19 16:36:56 +01:00
Chigozirim Igweamaka
26506e78c5 update wasm file 2025-11-19 16:36:12 +01:00
Chigozirim Igweamaka
2e253a0036 Add .env enxample to client 2025-11-19 16:34:33 +01:00
Chigozirim Igweamaka
d820dda8be Add .env enxample to server 2025-11-19 16:34:24 +01:00
Chigozirim Igweamaka
068e28cdad Move wasm folder from ./server to project's root 2025-11-19 16:33:52 +01:00
Chigozirim Igweamaka
3448cd390b feat: Add support for stereo audio recording 2025-07-16 05:11:56 +01:00
Chigozirim Igweamaka
46d08c7fea feat: Add support for stereo audio recording 2025-07-16 05:11:39 +01:00
Chigozirim Igweamaka
14df5b3845 feat: enhance generateFingerprint function to handle stereo input audio 2025-07-16 05:08:05 +01:00
Chigozirim Igweamaka
95d51b0ff5 fix: update .gitignore to include token.json 2025-07-15 15:39:28 +01:00
Chigozirim Igweamaka
64e8ee696d feat: implement FingerprintAudio function to process audio files and generate fingerprints 2025-07-15 15:38:07 +01:00
Chigozirim Igweamaka
8a68843bc6 refactor: simplify WAV conversion and fingerprinting process 2025-07-15 15:37:28 +01:00
Chigozirim Igweamaka
c2fc834a0b refactor: simplify WAV conversion and fingerprinting process 2025-07-15 15:36:35 +01:00
Chigozirim Igweamaka
6635647061 feat: add ExtendMap function to merge two maps 2025-07-15 15:35:52 +01:00
Chigozirim Igweamaka
2b85c7fd97 feat: update ConvertToWAV function to determine channels from environment variable 2025-07-15 15:35:33 +01:00
Chigozirim Igweamaka
781438c7b8 feat: enhance ReadWavInfo and WavInfo struct to include left and right channel samples 2025-07-15 15:33:52 +01:00
Chigozirim Igweamaka
e3ddaa050a Update prerequisites to Include YT-DLP 2025-07-09 15:08:11 +01:00
Chigozirim Igweamaka
7a2130ce22 refactor: replace downloadYTaudio with downloadYTaudio2 and update file handling 2025-07-09 12:35:55 +01:00
Chigozirim Igweamaka
4f1137e162 feat: add downloadYTaudio2 function to download YouTube audio using yt-dlp CLI 2025-07-09 12:35:08 +01:00
Chigozirim Igweamaka
29867c8b34 fix: delete non .wav file after conversion. 2025-07-09 12:30:31 +01:00
Chigozirim Igweamaka
e51b06c159
Merge pull request #40 from KaNaDaAT/main
Spotify API and SQLite improvements
2025-06-27 11:01:56 -07:00
KaNaDaAT
c4b7f5a14a feat: Use env for credentials 2025-06-07 16:15:38 +02:00
KaNaDaAT
d6bea0a568 feat: Logging for downloader.go 2025-06-07 15:09:39 +02:00
KaNaDaAT
ab5be2f50e fix(db): prevent "database is locked" errors by improving SQLite usage
- 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
2025-05-15 21:49:34 +02:00
KaNaDaAT
1daf682062 fix: spotify regex pattern
Fix regex pattern to use non-capturing group for optional intl prefix in Spotify track URLs
2025-05-15 21:49:34 +02:00
KaNaDaAT
8f1ab855a2 Update README.md
Infos about the Spotify API
2025-05-15 21:49:34 +02:00
KaNaDaAT
fbaf329872 refactor: switch to official Spotify developer API with client credentials flow
- 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
2025-05-15 21:49:30 +02:00
KaNaDaAT
98e4d46a31 style: Some tidy up / logging 2025-05-15 20:05:35 +02:00
KaNaDaAT
112b90968a update: Versions
Xoutube.Client() did no longer work
2025-05-15 20:04:18 +02:00
Chigozirim Igweamaka
69bd180e99 fix: update .gitignore to ignore recordings directory 2025-04-12 14:34:46 +01:00
Chigozirim Igweamaka
5b24c06e6d fix: update .gitignore to correctly ignore the songs directory 2025-04-12 14:33:13 +01:00
Chigozirim Igweamaka
28eca1ea2a Delete songs folder 2025-04-12 14:32:44 +01:00
Chigozirim Igweamaka
649f19b4a0
Merge pull request #36 from cgzirim/development
Dockerize App
2025-04-08 02:49:12 +01:00
Chigozirim Igweamaka
fadd713226
Update README.md 2025-04-07 13:07:12 +01:00