@nanalabs/sajam
v1.0.2
Published
High-performance Node.js bindings for the sajam Shazam API wrapper
Downloads
47
Maintainers
Readme
@nanalabs/sajam
High-performance Node.js bindings for the sajam Shazam API wrapper. Identify music and retrieve track metadata directly from your Node.js applications.
Features
- Fast Recognition: Asynchronous audio fingerprinting using N-API.
- Detailed Metadata: Get titles, artists, genres, lyrics, and streaming links.
- Promise-based API: Clean async/await integration.
- TypeScript Support: Full type definitions included.
Installation
npm install @nanalabs/sajamSystem Dependencies
Since this package compiles native C++ code, you must have the following libraries installed on your system:
- FFmpeg (libavcodec, libavformat, libavutil, libswresample)
- FFTW3
- libcurl
- C++20 Compiler (GCC 11+ or Clang 13+)
- CMake
Debian/Ubuntu
sudo apt-get install libcurl4-openssl-dev libfftw3-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev cmakeUsage
const { MusicFinder } = require('@nanalabs/sajam');
const fs = require('fs');
async function run() {
const finder = new MusicFinder();
// Read any audio file supported by FFmpeg
const buffer = fs.readFileSync('sample.mp3');
console.log('Recognizing...');
const result = await finder.recognize(buffer);
if (result.found) {
console.log(`Matched: ${result.track.title} - ${result.track.subtitle}`);
console.log(`Shazam URL: ${result.track.url}`);
} else {
console.log('No match found.');
}
}
run().catch(console.error);API
new MusicFinder()
Creates a new instance of the music identification engine.
recognize(buffer: Buffer): Promise<RecognitionResult>
Processes the provided audio buffer and queries the Shazam API.
getTrackInfo(trackId: string): Promise<Track>
Retrieves extended metadata for a specific track key.
version(): string
Returns the underlying sajam library version.
Testing
npm testLicense
GPLv3 - See the LICENSE file for details.
