{"library":"music-metadata","title":"Music Metadata Parser","description":"music-metadata is a robust and comprehensive JavaScript library for parsing audio file metadata in Node.js and browser environments (with appropriate bundlers). It supports an extensive array of audio formats including MP3, MP4, FLAC, Ogg, WAV, and AIFF, and extracts detailed metadata such as ID3v1, ID3v2, APE, Vorbis, and iTunes/MP4 tags. The current stable version is 11.12.3, with regular patch and minor releases addressing bugs, enhancing features, and updating internal dependencies. Key differentiators include its broad format and tag support, efficient streaming capabilities for handling large audio files, a modern promise-based API for asynchronous workflows, and cross-platform compatibility. It primarily operates as an ECMAScript Module (ESM) and requires Node.js version 18 or newer.","language":"javascript","status":"active","last_verified":"Sun Apr 19","install":{"commands":["npm install music-metadata"],"cli":null},"imports":["import { parseFile } from 'music-metadata';","import { parseStream } from 'music-metadata';","import type { IAudioMetadata } from 'music-metadata';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { parseFile } from 'music-metadata';\nimport { createReadStream, promises as fsPromises } from 'node:fs';\nimport { join } from 'node:path';\n\nasync function getAudioMetadata(filePath: string) {\n  try {\n    // Create a dummy file for demonstration purposes if it doesn't exist\n    const dummyFilePath = join(__dirname, 'dummy.mp3');\n    try {\n      await fsPromises.access(dummyFilePath);\n    } catch {\n      // Create a minimal dummy file if it doesn't exist\n      await fsPromises.writeFile(dummyFilePath, Buffer.from('RIFF\\x00\\x00\\x00\\x00WAVEfmt \\x10\\x00\\x00\\x00\\x01\\x00\\x01\\x00D\\xac\\x00\\x00\\x80\\xbb\\x00\\x00\\x02\\x00\\x10\\x00data\\x00\\x00\\x00\\x00'));\n      console.log(`Created a dummy MP3 file at ${dummyFilePath}`);\n    }\n\n    // Parse metadata from the dummy file path\n    const metadataFromFile = await parseFile(dummyFilePath);\n    console.log('Metadata from file:', metadataFromFile.common.artist, '-', metadataFromFile.common.title);\n    console.log('Duration:', metadataFromFile.format.duration, 'seconds');\n\n    // Alternatively, parse from a stream\n    const stream = createReadStream(dummyFilePath);\n    try {\n      const metadataFromStream = await parseFile(stream);\n      console.log('Metadata from stream:', metadataFromStream.common.artist, '-', metadataFromStream.common.title);\n    } finally {\n      stream.close();\n    }\n\n  } catch (error) {\n    console.error('Error parsing metadata:', error);\n  }\n}\n\n// Replace 'your-audio-file.mp3' with a real path for actual use\ngetAudioMetadata('./path/to/your-audio-file.mp3');\n","lang":"typescript","description":"This quickstart demonstrates how to use `music-metadata` to parse metadata from a local audio file and a readable stream, including creating a dummy file for local testing.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}