UNPKG

taglib-wasm

Version:

TagLib for TypeScript platforms: Deno, Node.js, Bun, Electron, browsers, and Cloudflare Workers

190 lines (189 loc) 4.73 kB
const Tags = { // Basic Properties /** Track/song title */ Title: "TITLE", /** Primary performer(s) */ Artist: "ARTIST", /** Album/collection name */ Album: "ALBUM", /** Date of recording (year) */ Date: "DATE", /** Track number on album */ TrackNumber: "TRACKNUMBER", /** Musical genre */ Genre: "GENRE", /** Comments/notes */ Comment: "COMMENT", // Extended Properties /** Band/orchestra/ensemble */ AlbumArtist: "ALBUMARTIST", /** Original composer(s) */ Composer: "COMPOSER", /** Copyright information */ Copyright: "COPYRIGHT", /** Encoding software/person */ EncodedBy: "ENCODEDBY", /** Disc number for multi-disc sets */ DiscNumber: "DISCNUMBER", /** Beats per minute */ Bpm: "BPM", /** Lyrics/text writer(s) */ Lyricist: "LYRICIST", /** Conductor */ Conductor: "CONDUCTOR", /** Person who remixed */ Remixer: "REMIXEDBY", /** Language of vocals/lyrics */ Language: "LANGUAGE", /** Publisher */ Publisher: "PUBLISHER", /** Mood/atmosphere */ Mood: "MOOD", /** Media type (CD, vinyl, etc.) */ Media: "MEDIA", /** Radio station owner */ RadioStationOwner: "RADIOSTATIONOWNER", /** Producer */ Producer: "PRODUCER", /** Album subtitle */ Subtitle: "SUBTITLE", /** Release label */ Label: "LABEL", // Sorting Properties /** Sort name for title */ TitleSort: "TITLESORT", /** Sort name for artist */ ArtistSort: "ARTISTSORT", /** Sort name for album artist */ AlbumArtistSort: "ALBUMARTISTSORT", /** Sort name for album */ AlbumSort: "ALBUMSORT", /** Sort name for composer */ ComposerSort: "COMPOSERSORT", // Identifiers /** International Standard Recording Code */ Isrc: "ISRC", /** Amazon Standard Identification Number */ Asin: "ASIN", /** Catalog number */ CatalogNumber: "CATALOGNUMBER", /** Barcode (EAN/UPC) */ Barcode: "BARCODE", // MusicBrainz Identifiers /** MusicBrainz Artist ID */ MusicBrainzArtistId: "MUSICBRAINZ_ARTISTID", /** MusicBrainz Release Artist ID */ MusicBrainzReleaseArtistId: "MUSICBRAINZ_ALBUMARTISTID", /** MusicBrainz Work ID */ MusicBrainzWorkId: "MUSICBRAINZ_WORKID", /** MusicBrainz Release ID */ MusicBrainzReleaseId: "MUSICBRAINZ_ALBUMID", /** MusicBrainz Recording ID */ MusicBrainzRecordingId: "MUSICBRAINZ_TRACKID", /** MusicBrainz Track ID (deprecated, use RecordingId) */ MusicBrainzTrackId: "MUSICBRAINZ_TRACKID", /** MusicBrainz Release Group ID */ MusicBrainzReleaseGroupId: "MUSICBRAINZ_RELEASEGROUPID", /** MusicBrainz Release Track ID */ MusicBrainzReleaseTrackId: "MUSICBRAINZ_RELEASETRACKID", // Podcast Properties /** Podcast identifier */ PodcastId: "PODCASTID", /** Podcast URL */ PodcastUrl: "PODCASTURL", // Grouping and Work /** Content group/work */ Grouping: "GROUPING", /** Work name */ Work: "WORK", // Additional Metadata /** Lyrics content */ Lyrics: "LYRICS", /** Album gain (ReplayGain) */ AlbumGain: "REPLAYGAIN_ALBUM_GAIN", /** Album peak (ReplayGain) */ AlbumPeak: "REPLAYGAIN_ALBUM_PEAK", /** Track gain (ReplayGain) */ TrackGain: "REPLAYGAIN_TRACK_GAIN", /** Track peak (ReplayGain) */ TrackPeak: "REPLAYGAIN_TRACK_PEAK", // Special handling /** Original artist for covers */ OriginalArtist: "ORIGINALARTIST", /** Original album */ OriginalAlbum: "ORIGINALALBUM", /** Original release date */ OriginalDate: "ORIGINALDATE", /** Script/writing system */ Script: "SCRIPT", /** Involved people list */ InvolvedPeopleList: "INVOLVEDPEOPLELIST", // Technical Properties /** Encoder settings/software */ EncoderSettings: "ENCODERSETTINGS", /** Source media */ SourceMedia: "SOURCEMEDIA" }; function isValidTagName(name) { return Object.values(Tags).includes(name); } function getAllTagNames() { return Object.values(Tags); } const FormatMappings = { Title: { id3v2: "TIT2", mp4: "\xA9nam", vorbis: "TITLE", ape: "Title", riff: "INAM" }, Artist: { id3v2: "TPE1", mp4: "\xA9ART", vorbis: "ARTIST", ape: "Artist", riff: "IART" }, Album: { id3v2: "TALB", mp4: "\xA9alb", vorbis: "ALBUM", ape: "Album", riff: "IPRD" }, Date: { id3v2: "TDRC", mp4: "\xA9day", vorbis: "DATE", ape: "Year", riff: "ICRD" }, Genre: { id3v2: "TCON", mp4: "\xA9gen", vorbis: "GENRE", ape: "Genre", riff: "IGNR" }, Comment: { id3v2: "COMM", mp4: "\xA9cmt", vorbis: "COMMENT", ape: "Comment", riff: "ICMT" }, TrackNumber: { id3v2: "TRCK", mp4: "trkn", vorbis: "TRACKNUMBER", ape: "Track", riff: "ITRK" } }; export { FormatMappings, Tags, getAllTagNames, isValidTagName };