taglib-wasm
Version:
TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps
151 lines (150 loc) • 5 kB
JavaScript
const SPECIALIZED_PROPERTIES = {
// MusicBrainz Identifiers
musicbrainzArtistId: {
key: "MUSICBRAINZ_ARTISTID",
description: "MusicBrainz Artist ID (UUID)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "MusicBrainz Artist Id" },
vorbis: "MUSICBRAINZ_ARTISTID",
mp4: "----:com.apple.iTunes:MusicBrainz Artist Id"
}
},
musicbrainzReleaseId: {
key: "MUSICBRAINZ_ALBUMID",
description: "MusicBrainz Release ID (UUID)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "MusicBrainz Album Id" },
vorbis: "MUSICBRAINZ_ALBUMID",
mp4: "----:com.apple.iTunes:MusicBrainz Album Id"
}
},
musicbrainzTrackId: {
key: "MUSICBRAINZ_TRACKID",
description: "MusicBrainz Recording ID (UUID)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "UFID", description: "http://musicbrainz.org" },
vorbis: "MUSICBRAINZ_TRACKID",
mp4: "----:com.apple.iTunes:MusicBrainz Track Id"
}
},
musicbrainzReleaseGroupId: {
key: "MUSICBRAINZ_RELEASEGROUPID",
description: "MusicBrainz Release Group ID (UUID)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "MusicBrainz Release Group Id" },
vorbis: "MUSICBRAINZ_RELEASEGROUPID",
mp4: "----:com.apple.iTunes:MusicBrainz Release Group Id"
}
},
// ReplayGain Properties
replayGainTrackGain: {
key: "REPLAYGAIN_TRACK_GAIN",
description: "ReplayGain track gain in dB (e.g., '-6.54 dB')",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "ReplayGain_Track_Gain" },
vorbis: "REPLAYGAIN_TRACK_GAIN",
mp4: "----:com.apple.iTunes:replaygain_track_gain"
}
},
replayGainTrackPeak: {
key: "REPLAYGAIN_TRACK_PEAK",
description: "ReplayGain track peak value (0.0-1.0)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "ReplayGain_Track_Peak" },
vorbis: "REPLAYGAIN_TRACK_PEAK",
mp4: "----:com.apple.iTunes:replaygain_track_peak"
}
},
replayGainAlbumGain: {
key: "REPLAYGAIN_ALBUM_GAIN",
description: "ReplayGain album gain in dB",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "ReplayGain_Album_Gain" },
vorbis: "REPLAYGAIN_ALBUM_GAIN",
mp4: "----:com.apple.iTunes:replaygain_album_gain"
}
},
replayGainAlbumPeak: {
key: "REPLAYGAIN_ALBUM_PEAK",
description: "ReplayGain album peak value (0.0-1.0)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "ReplayGain_Album_Peak" },
vorbis: "REPLAYGAIN_ALBUM_PEAK",
mp4: "----:com.apple.iTunes:replaygain_album_peak"
}
},
// AcoustID Properties
acoustidFingerprint: {
key: "ACOUSTID_FINGERPRINT",
description: "AcoustID fingerprint (Chromaprint)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "Acoustid Fingerprint" },
vorbis: "ACOUSTID_FINGERPRINT",
mp4: "----:com.apple.iTunes:Acoustid Fingerprint"
}
},
acoustidId: {
key: "ACOUSTID_ID",
description: "AcoustID UUID",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "Acoustid Id" },
vorbis: "ACOUSTID_ID",
mp4: "----:com.apple.iTunes:Acoustid Id"
}
},
// Apple Sound Check
appleSoundCheck: {
key: "ITUNNORM",
description: "Apple Sound Check normalization data",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "iTunNORM" },
vorbis: "ITUNNORM",
mp4: "----:com.apple.iTunes:iTunNORM"
}
},
/**
* Apple gapless-playback data (encoder delay, padding, original sample count).
*
* Exists so the two Apple freeform atoms are presented consistently: without
* it, `properties()` answered `appleSoundCheck` for iTunNORM but the raw
* uppercased `ITUNSMPB` for its sibling, because only one had an alias. The
* name mirrors `appleSoundCheck` — vendor-prefixed, feature-named rather than
* atom-named (tuneup-ibo).
*/
appleGaplessInfo: {
key: "ITUNSMPB",
description: "Apple gapless playback data (encoder delay and padding)",
type: "string",
supportedFormats: ["ID3v2", "MP4", "Vorbis"],
mappings: {
id3v2: { frame: "TXXX", description: "iTunSMPB" },
vorbis: "ITUNSMPB",
mp4: "----:com.apple.iTunes:iTunSMPB"
}
}
};
export {
SPECIALIZED_PROPERTIES
};