jamp3
Version:
mp3, id3v1, id3v2 - reader & writer
472 lines (471 loc) • 13.8 kB
TypeScript
/// <reference types="node" />
import { ITag } from '../common/types';
export declare namespace IID3V2 {
namespace FrameValue {
interface Base {
}
interface IdAscii extends Base {
id: string;
text: string;
}
interface LangDescText extends Base {
language: string;
id: string;
text: string;
}
interface LangText extends Base {
language: string;
text: string;
}
interface Pic extends Base {
description: string;
pictureType: number;
url?: string;
bin?: Buffer;
mimeType?: string;
}
interface Bin {
bin: Buffer;
}
interface Number extends Base {
num: number;
}
interface RVA extends Base {
right: number;
left: number;
peakRight?: number;
peakLeft?: number;
rightBack?: number;
leftBack?: number;
peakRightBack?: number;
peakLeftBack?: number;
center?: number;
peakCenter?: number;
bass?: number;
peakBass?: number;
}
interface RVA2Channel extends Base {
type: number;
adjustment: number;
peak?: number;
}
interface RVA2 extends Base {
id: string;
channels: Array<RVA2Channel>;
}
interface Popularimeter extends Base {
rating: number;
count: number;
email: string;
}
interface Bool extends Base {
bool: boolean;
}
interface AudioEncryption extends Base {
id: string;
previewStart: number;
previewLength: number;
bin: Buffer;
}
interface LinkedInfo extends Base {
url: string;
id: string;
additional: Array<string>;
}
interface EventTimingCodes extends Base {
format: number;
events: Array<EventTimingCodesEvent>;
}
interface EventTimingCodesEvent {
type: number;
timestamp: number;
}
interface SynchronisedLyrics extends Base {
id: string;
language: string;
timestampFormat: number;
contentType: number;
events: Array<SynchronisedLyricsEvent>;
}
interface SynchronisedLyricsEvent {
timestamp: number;
text: string;
}
interface GEOB extends Base {
filename: string;
mimeType: string;
contentDescription: string;
bin: Buffer;
}
interface ReplayGainAdjustment extends Base {
peak: number;
radioAdjustment: number;
audiophileAdjustment: number;
}
interface ChapterToc extends Base {
id: string;
ordered: boolean;
topLevel: boolean;
children: Array<string>;
}
interface Chapter extends Base {
id: string;
start: number;
end: number;
offset: number;
offsetEnd: number;
}
interface IdBin extends Base {
id: string;
bin: Buffer;
}
interface IdText extends Base {
id: string;
text: string;
}
interface Ascii extends Base {
text: string;
}
interface Text extends Base {
text: string;
}
interface TextList extends Base {
list: Array<string>;
}
}
interface FrameHeaderFormatFlags {
[name: string]: boolean | undefined;
dataLengthIndicator?: boolean;
unsynchronised?: boolean;
compressed?: boolean;
encrypted?: boolean;
grouping?: boolean;
reserved?: boolean;
reserved2?: boolean;
reserved3?: boolean;
}
interface FrameHeaderStatusFlags {
[name: string]: boolean | undefined;
unsynchronisation?: boolean;
extendedheader?: boolean;
experimental?: boolean;
footer?: boolean;
}
interface FrameHeader {
encoding?: string;
statusFlags?: FrameHeaderStatusFlags;
formatFlags?: FrameHeaderFormatFlags;
size?: number;
}
interface Frame {
id: string;
title?: string;
head?: FrameHeader;
value: FrameValue.Base;
subframes?: Array<Frame>;
invalid?: string;
groupId?: number;
}
namespace Frames {
interface Map {
[key: string]: Array<Frame>;
}
interface TextFrame extends Frame {
value: FrameValue.Text;
}
interface NumberFrame extends Frame {
value: FrameValue.Number;
}
interface IdTextFrame extends Frame {
value: FrameValue.IdText;
}
interface TextListFrame extends Frame {
value: FrameValue.TextList;
}
interface BoolFrame extends Frame {
value: FrameValue.Bool;
}
interface LangDescTextFrame extends Frame {
value: FrameValue.LangDescText;
}
interface PicFrame extends Frame {
value: FrameValue.Pic;
}
interface IdBinFrame extends Frame {
value: FrameValue.IdBin;
}
interface ChapterFrame extends Frame {
value: FrameValue.Chapter;
}
interface EventTimingCodesFrame extends Frame {
value: FrameValue.EventTimingCodes;
}
interface SynchronisedLyricsFrame extends Frame {
value: FrameValue.SynchronisedLyrics;
}
interface RelativeAudioAdjustmentsFrame extends Frame {
value: FrameValue.RVA;
}
interface RelativeAudioAdjustments2Frame extends Frame {
value: FrameValue.RVA2;
}
interface UnknownFrame extends Frame {
value: FrameValue.Bin;
}
interface GEOBFrame extends Frame {
value: FrameValue.GEOB;
}
interface PopularimeterFrame extends Frame {
value: FrameValue.Popularimeter;
}
interface AudioEncryptionFrame extends Frame {
value: FrameValue.AudioEncryption;
}
interface LinkedInfoFrame extends Frame {
value: FrameValue.LinkedInfo;
}
interface LangTextFrame extends Frame {
value: FrameValue.LangText;
}
interface ReplayGainAdjustmentFrame extends Frame {
value: FrameValue.ReplayGainAdjustment;
}
interface ChapterTOCFrame extends Frame {
value: FrameValue.ChapterToc;
}
}
interface Builder {
buildFrames(): Array<Frame>;
version(): number;
rev(): number;
}
interface TagHeader {
ver: number;
rev: number;
size: number;
valid: boolean;
v2?: TagHeaderV2;
v3?: TagHeaderV3;
v4?: TagHeaderV4;
flagBits?: Array<number>;
}
interface TagHeaderV2 {
sizeAsSyncSafe?: number;
flags: TagHeaderFlagsV2;
}
interface TagHeaderFlagsV2 {
unsynchronisation?: boolean;
compression?: boolean;
}
interface TagHeaderV3 {
flags: TagHeaderFlagsV3;
extended?: TagHeaderExtendedVer3;
}
interface TagHeaderFlagsV3 {
unsynchronisation?: boolean;
extendedheader?: boolean;
experimental?: boolean;
}
interface TagHeaderExtendedVer3 {
size: number;
flags1: FrameHeaderStatusFlags;
flags2: FrameHeaderStatusFlags;
crcData?: number;
sizeOfPadding: number;
}
interface TagHeaderV4 {
flags: TagHeaderFlagsV4;
extended?: TagHeaderExtendedVer4;
}
interface TagHeaderFlagsV4 {
unsynchronisation?: boolean;
extendedheader?: boolean;
experimental?: boolean;
footer?: boolean;
}
interface TagHeaderExtendedVer4 {
size: number;
flags: FrameHeaderStatusFlags;
restrictions?: {
tagSize: string;
textEncoding: string;
textSize: string;
imageEncoding: string;
imageSize: string;
};
crc32?: number;
}
interface Tag extends ITag {
head?: TagHeader;
frames: Array<Frame>;
}
interface ID3v2Tag {
head?: TagHeader;
frames: Array<Frame>;
}
interface RawTag extends ITag {
head: TagHeader;
frames: Array<RawFrame>;
}
interface RawFrame {
id: string;
start: number;
end: number;
size: number;
data: Buffer;
statusFlags: FrameHeaderStatusFlags;
formatFlags: FrameHeaderFormatFlags;
}
interface TagSimplified {
[name: string]: string | undefined;
ACOUSTID_FINGERPRINT?: string;
ACOUSTID_ID?: string;
ALBUM?: string;
ALBUMARTIST?: string;
ALBUMARTISTSORT?: string;
ALBUMSORT?: string;
ARRANGER?: string;
ARTIST?: string;
ARTISTS?: string;
ARTISTSORT?: string;
ASIN?: string;
AUDIOENCRYPTION?: string;
AUDIOSEEKPOINTINDEX?: string;
AUDIOSOURCEWWEBPAGEURL?: string;
AUDIOSTREAMSIZE?: string;
BARCODE?: string;
BPM?: string;
CATALOGNUMBER?: string;
CHAPTER?: string;
CHAPTERTOC?: string;
COMMENT?: string;
COMMERCIAL?: string;
COMMERCIALINFORMATIONURL?: string;
COMPILATION?: string;
COMPOSER?: string;
COMPOSERSORT?: string;
COMPRESSEDMETA?: string;
CONDUCTOR?: string;
COPYRIGHT?: string;
DATE?: string;
DISCNUMBER?: string;
DISCSUBTITLE?: string;
DISCTOTAL?: string;
DJMIXER?: string;
ENCODEDBY?: string;
ENCODERSETTINGS?: string;
ENCODINGTIME?: string;
ENCRYPTEDMET?: string;
ENCRYPTIONMETHODREGISTRATION?: string;
ENGINEER?: string;
EQUALISATION?: string;
EVENTTIMINGCODE?: string;
FILEOWNER?: string;
FILETYPE?: string;
FILEWEBPAGEURL?: string;
GENERALENCAPSULATEDOBJECT?: string;
GENRE?: string;
GROUPIDREGISTRATION?: string;
GROUPING?: string;
ISRC?: string;
KEY?: string;
LABEL?: string;
LANGUAGE?: string;
LICENSE?: string;
LYRICIST?: string;
LYRICS?: string;
MEDIA?: string;
MIXER?: string;
MOOD?: string;
MOVEMENT?: string;
MOVEMENTNAME?: string;
MOVEMENTTOTAL?: string;
MP3HD?: string;
MPEGLOCATIONLOOKUPTABLE?: string;
MUSICBRAINZ_ALBUMARTISTID?: string;
MUSICBRAINZ_ALBUMID?: string;
MUSICBRAINZ_ARTISTID?: string;
MUSICBRAINZ_DISCID?: string;
MUSICBRAINZ_ORIGINALALBUMID?: string;
MUSICBRAINZ_ORIGINALARTISTID?: string;
MUSICBRAINZ_RELEASEGROUPID?: string;
MUSICBRAINZ_RELEASETRACKID?: string;
MUSICBRAINZ_TRACKID?: string;
MUSICBRAINZ_TRMID?: string;
MUSICBRAINZ_WORKID?: string;
MUSICCDID?: string;
MUSICIP_PUID?: string;
MUSICMATCH?: string;
ORGANIZATION?: string;
ORIGINALALBUM?: string;
ORIGINALARTIST?: string;
ORIGINALDATE?: string;
ORIGINALFILENAME?: string;
ORIGINALLYICIST?: string;
ORIGINALYEAR?: string;
OWNERSHIP?: string;
PARTNUMBE?: string;
PAYMENTURL?: string;
PERFORME?: string;
PICTURE?: string;
PLAYCOUNTER?: string;
PLAYLISTDELAY?: string;
PODCAST?: string;
PODCAST_DESCRIPTION?: string;
PODCAST_KEYWORDS?: string;
PODCASTFEEDURL?: string;
PODCASTID?: string;
POSITIONSYNCHRONISATION?: string;
PRODUCEDNOTICE?: string;
PRODUCER?: string;
PUBLISHERURL?: string;
RADIOSTATIONNAME?: string;
RADIOSTATIONOWNER?: string;
RADIOSTATIONWEBPAGEURL?: string;
RATING?: string;
RECOMMENDEDBUFFERSIZE?: string;
RECORDINGDATES?: string;
RELATIVEVOLUMEADJUSTMENT?: string;
RELEASECOUNTRY?: string;
RELEASESTATUS?: string;
RELEASETIME?: string;
RELEASETYPE?: string;
REMIXER?: string;
REPLAYGAIN_ALBUM_GAIN?: string;
REPLAYGAIN_ALBUM_PEAK?: string;
REPLAYGAIN_TRACK_GAIN?: string;
REPLAYGAIN_TRACK_PEAK?: string;
REPLAYGAINADJUSTMENT?: string;
REVERB?: string;
SCRIPT?: string;
SEEK?: string;
SHOWMOVEMENT?: string;
SIGNATURE?: string;
SUBTITLE?: string;
SYNCHRONISEDLYRICS?: string;
SYNCHRONISEDTEMPOCODES?: string;
TAGGINGTIME?: string;
TERMSOFUSE?: string;
TITLE?: string;
TITLESORT?: string;
TRACKLENGTH?: string;
TRACKNUMBER?: string;
TRACKTOTAL?: string;
WEBSITE?: string;
WORK?: string;
WRITER?: string;
}
interface Warning {
msg: string;
expected: number | string | boolean;
actual: number | string | boolean;
}
interface RemoveOptions {
keepBackup?: boolean;
}
interface WriteOptions {
defaultEncoding?: string;
paddingSize?: number;
keepBackup?: boolean;
}
}