music-metadata 7.11.1 → 7.11.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +432 -432
  2. package/lib/ParserFactory.d.ts +49 -49
  3. package/lib/ParserFactory.js +251 -251
  4. package/lib/aiff/AiffParser.d.ts +15 -15
  5. package/lib/aiff/AiffParser.js +85 -85
  6. package/lib/aiff/AiffToken.d.ts +22 -22
  7. package/lib/aiff/AiffToken.js +43 -43
  8. package/lib/apev2/APEv2Parser.d.ts +30 -30
  9. package/lib/apev2/APEv2Parser.js +162 -162
  10. package/lib/apev2/APEv2TagMapper.d.ts +4 -4
  11. package/lib/apev2/APEv2TagMapper.js +87 -86
  12. package/lib/apev2/APEv2Token.d.ts +100 -100
  13. package/lib/apev2/APEv2Token.js +127 -126
  14. package/lib/asf/AsfObject.d.ts +319 -319
  15. package/lib/asf/AsfObject.js +384 -384
  16. package/lib/asf/AsfParser.d.ts +17 -17
  17. package/lib/asf/AsfParser.js +135 -135
  18. package/lib/asf/AsfTagMapper.d.ts +7 -7
  19. package/lib/asf/AsfTagMapper.js +96 -95
  20. package/lib/asf/AsfUtil.d.ts +13 -13
  21. package/lib/asf/AsfUtil.js +40 -40
  22. package/lib/asf/GUID.d.ts +86 -86
  23. package/lib/asf/GUID.js +123 -123
  24. package/lib/common/BasicParser.d.ts +17 -17
  25. package/lib/common/BasicParser.js +18 -18
  26. package/lib/common/CaseInsensitiveTagMap.d.ts +10 -10
  27. package/lib/common/CaseInsensitiveTagMap.js +22 -21
  28. package/lib/common/CombinedTagMapper.d.ts +19 -19
  29. package/lib/common/CombinedTagMapper.js +52 -51
  30. package/lib/common/FourCC.d.ts +6 -6
  31. package/lib/common/FourCC.js +29 -28
  32. package/lib/common/GenericTagMapper.d.ts +51 -51
  33. package/lib/common/GenericTagMapper.js +56 -55
  34. package/lib/common/GenericTagTypes.d.ts +33 -33
  35. package/lib/common/GenericTagTypes.js +132 -131
  36. package/lib/common/MetadataCollector.d.ts +76 -76
  37. package/lib/common/MetadataCollector.js +276 -274
  38. package/lib/common/RandomFileReader.d.ts +20 -20
  39. package/lib/common/RandomFileReader.js +37 -37
  40. package/lib/common/RandomUint8ArrayReader.d.ts +18 -18
  41. package/lib/common/RandomUint8ArrayReader.js +25 -25
  42. package/lib/common/Util.d.ts +57 -57
  43. package/lib/common/Util.js +170 -169
  44. package/lib/core.d.ts +48 -48
  45. package/lib/core.js +90 -90
  46. package/lib/dsdiff/DsdiffParser.d.ts +14 -14
  47. package/lib/dsdiff/DsdiffParser.js +143 -143
  48. package/lib/dsdiff/DsdiffToken.d.ts +9 -9
  49. package/lib/dsdiff/DsdiffToken.js +21 -21
  50. package/lib/dsf/DsfChunk.d.ts +86 -86
  51. package/lib/dsf/DsfChunk.js +54 -54
  52. package/lib/dsf/DsfParser.d.ts +9 -9
  53. package/lib/dsf/DsfParser.js +56 -56
  54. package/lib/flac/FlacParser.d.ts +28 -28
  55. package/lib/flac/FlacParser.js +175 -175
  56. package/lib/id3v1/ID3v1Parser.d.ts +13 -13
  57. package/lib/id3v1/ID3v1Parser.js +134 -134
  58. package/lib/id3v1/ID3v1TagMap.d.ts +4 -4
  59. package/lib/id3v1/ID3v1TagMap.js +23 -22
  60. package/lib/id3v2/AbstractID3Parser.d.ts +17 -17
  61. package/lib/id3v2/AbstractID3Parser.js +60 -60
  62. package/lib/id3v2/FrameParser.d.ts +32 -32
  63. package/lib/id3v2/FrameParser.js +323 -323
  64. package/lib/id3v2/ID3v22TagMapper.d.ts +9 -9
  65. package/lib/id3v2/ID3v22TagMapper.js +56 -54
  66. package/lib/id3v2/ID3v24TagMapper.d.ts +14 -14
  67. package/lib/id3v2/ID3v24TagMapper.js +194 -193
  68. package/lib/id3v2/ID3v2Parser.d.ts +29 -29
  69. package/lib/id3v2/ID3v2Parser.js +194 -194
  70. package/lib/id3v2/ID3v2Token.d.ts +73 -73
  71. package/lib/id3v2/ID3v2Token.js +106 -106
  72. package/lib/iff/index.d.ts +33 -33
  73. package/lib/iff/index.js +19 -19
  74. package/lib/index.d.ts +34 -34
  75. package/lib/index.js +64 -64
  76. package/lib/lyrics3/Lyrics3.d.ts +3 -3
  77. package/lib/lyrics3/Lyrics3.js +17 -17
  78. package/lib/matroska/MatroskaDtd.d.ts +8 -8
  79. package/lib/matroska/MatroskaDtd.js +279 -279
  80. package/lib/matroska/MatroskaParser.d.ts +37 -37
  81. package/lib/matroska/MatroskaParser.js +235 -234
  82. package/lib/matroska/MatroskaTagMapper.d.ts +4 -4
  83. package/lib/matroska/MatroskaTagMapper.js +36 -35
  84. package/lib/matroska/types.d.ts +175 -175
  85. package/lib/matroska/types.js +32 -32
  86. package/lib/mp4/Atom.d.ts +16 -16
  87. package/lib/mp4/Atom.js +70 -70
  88. package/lib/mp4/AtomToken.d.ts +395 -395
  89. package/lib/mp4/AtomToken.js +406 -406
  90. package/lib/mp4/MP4Parser.d.ts +30 -31
  91. package/lib/mp4/MP4Parser.js +511 -515
  92. package/lib/mp4/MP4TagMapper.d.ts +5 -5
  93. package/lib/mp4/MP4TagMapper.js +116 -115
  94. package/lib/mpeg/ExtendedLameHeader.d.ts +27 -27
  95. package/lib/mpeg/ExtendedLameHeader.js +31 -31
  96. package/lib/mpeg/MpegParser.d.ts +49 -49
  97. package/lib/mpeg/MpegParser.js +529 -529
  98. package/lib/mpeg/ReplayGainDataFormat.d.ts +55 -55
  99. package/lib/mpeg/ReplayGainDataFormat.js +69 -69
  100. package/lib/mpeg/XingTag.d.ts +45 -45
  101. package/lib/mpeg/XingTag.js +69 -69
  102. package/lib/musepack/index.d.ts +5 -5
  103. package/lib/musepack/index.js +32 -32
  104. package/lib/musepack/sv7/BitReader.d.ts +13 -13
  105. package/lib/musepack/sv7/BitReader.js +54 -54
  106. package/lib/musepack/sv7/MpcSv7Parser.d.ts +8 -8
  107. package/lib/musepack/sv7/MpcSv7Parser.js +46 -46
  108. package/lib/musepack/sv7/StreamVersion7.d.ts +28 -28
  109. package/lib/musepack/sv7/StreamVersion7.js +41 -41
  110. package/lib/musepack/sv8/MpcSv8Parser.d.ts +6 -6
  111. package/lib/musepack/sv8/MpcSv8Parser.js +55 -55
  112. package/lib/musepack/sv8/StreamVersion8.d.ts +40 -40
  113. package/lib/musepack/sv8/StreamVersion8.js +80 -80
  114. package/lib/ogg/Ogg.d.ts +72 -72
  115. package/lib/ogg/Ogg.js +2 -2
  116. package/lib/ogg/OggParser.d.ts +23 -23
  117. package/lib/ogg/OggParser.js +126 -126
  118. package/lib/ogg/opus/Opus.d.ts +48 -48
  119. package/lib/ogg/opus/Opus.js +28 -28
  120. package/lib/ogg/opus/OpusParser.d.ts +25 -25
  121. package/lib/ogg/opus/OpusParser.js +56 -56
  122. package/lib/ogg/speex/Speex.d.ts +36 -36
  123. package/lib/ogg/speex/Speex.js +31 -31
  124. package/lib/ogg/speex/SpeexParser.d.ts +22 -22
  125. package/lib/ogg/speex/SpeexParser.js +35 -35
  126. package/lib/ogg/theora/Theora.d.ts +20 -20
  127. package/lib/ogg/theora/Theora.js +23 -23
  128. package/lib/ogg/theora/TheoraParser.d.ts +28 -28
  129. package/lib/ogg/theora/TheoraParser.js +44 -44
  130. package/lib/ogg/vorbis/Vorbis.d.ts +79 -79
  131. package/lib/ogg/vorbis/Vorbis.js +78 -78
  132. package/lib/ogg/vorbis/VorbisDecoder.d.ts +12 -12
  133. package/lib/ogg/vorbis/VorbisDecoder.js +32 -32
  134. package/lib/ogg/vorbis/VorbisParser.d.ts +36 -36
  135. package/lib/ogg/vorbis/VorbisParser.js +128 -128
  136. package/lib/ogg/vorbis/VorbisTagMapper.d.ts +7 -7
  137. package/lib/ogg/vorbis/VorbisTagMapper.js +133 -132
  138. package/lib/riff/RiffChunk.d.ts +16 -16
  139. package/lib/riff/RiffChunk.js +32 -32
  140. package/lib/riff/RiffInfoTagMap.d.ts +10 -10
  141. package/lib/riff/RiffInfoTagMap.js +38 -37
  142. package/lib/type.d.ts +599 -599
  143. package/lib/type.js +14 -13
  144. package/lib/wav/WaveChunk.d.ts +64 -64
  145. package/lib/wav/WaveChunk.js +65 -65
  146. package/lib/wav/WaveParser.d.ts +24 -24
  147. package/lib/wav/WaveParser.js +144 -144
  148. package/lib/wavpack/WavPackParser.d.ts +14 -14
  149. package/lib/wavpack/WavPackParser.js +105 -105
  150. package/lib/wavpack/WavPackToken.d.ts +64 -64
  151. package/lib/wavpack/WavPackToken.js +76 -76
  152. package/package.json +142 -142
@@ -1,9 +1,9 @@
1
- import { INativeTagMap } from '../common/GenericTagTypes';
2
- import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
3
- /**
4
- * ID3v2.2 tag mappings
5
- */
6
- export declare const id3v22TagMap: INativeTagMap;
7
- export declare class ID3v22TagMapper extends CaseInsensitiveTagMap {
8
- constructor();
9
- }
1
+ import { INativeTagMap } from '../common/GenericTagTypes';
2
+ import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
3
+ /**
4
+ * ID3v2.2 tag mappings
5
+ */
6
+ export declare const id3v22TagMap: INativeTagMap;
7
+ export declare class ID3v22TagMapper extends CaseInsensitiveTagMap {
8
+ constructor();
9
+ }
@@ -1,54 +1,56 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ID3v22TagMapper = exports.id3v22TagMap = void 0;
4
- const CaseInsensitiveTagMap_1 = require("../common/CaseInsensitiveTagMap");
5
- /**
6
- * ID3v2.2 tag mappings
7
- */
8
- exports.id3v22TagMap = {
9
- TT2: 'title',
10
- TP1: 'artist',
11
- TP2: 'albumartist',
12
- TAL: 'album',
13
- TYE: 'year',
14
- COM: 'comment',
15
- TRK: 'track',
16
- TPA: 'disk',
17
- TCO: 'genre',
18
- PIC: 'picture',
19
- TCM: 'composer',
20
- TOR: 'originaldate',
21
- TOT: 'originalalbum',
22
- TXT: 'lyricist',
23
- TP3: 'conductor',
24
- TPB: 'label',
25
- TT1: 'grouping',
26
- TT3: 'subtitle',
27
- TLA: 'language',
28
- TCR: 'copyright',
29
- WCP: 'license',
30
- TEN: 'encodedby',
31
- TSS: 'encodersettings',
32
- WAR: 'website',
33
- 'COM:iTunPGAP': 'gapless'
34
- /* ToDo: iTunes tags:
35
- 'COM:iTunNORM': ,
36
- 'COM:iTunSMPB': 'encoder delay',
37
- 'COM:iTunes_CDDB_IDs'
38
- */ ,
39
- PCS: 'podcast',
40
- TCP: "compilation",
41
- TDR: 'date',
42
- TS2: 'albumartistsort',
43
- TSA: 'albumsort',
44
- TSC: 'composersort',
45
- TSP: 'artistsort',
46
- TST: 'titlesort',
47
- WFD: 'podcasturl'
48
- };
49
- class ID3v22TagMapper extends CaseInsensitiveTagMap_1.CaseInsensitiveTagMap {
50
- constructor() {
51
- super(['ID3v2.2'], exports.id3v22TagMap);
52
- }
53
- }
54
- exports.ID3v22TagMapper = ID3v22TagMapper;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ID3v22TagMapper = exports.id3v22TagMap = void 0;
4
+ const CaseInsensitiveTagMap_1 = require("../common/CaseInsensitiveTagMap");
5
+ /**
6
+ * ID3v2.2 tag mappings
7
+ */
8
+ exports.id3v22TagMap = {
9
+ TT2: 'title',
10
+ TP1: 'artist',
11
+ TP2: 'albumartist',
12
+ TAL: 'album',
13
+ TYE: 'year',
14
+ COM: 'comment',
15
+ TRK: 'track',
16
+ TPA: 'disk',
17
+ TCO: 'genre',
18
+ PIC: 'picture',
19
+ TCM: 'composer',
20
+ TOR: 'originaldate',
21
+ TOT: 'originalalbum',
22
+ TXT: 'lyricist',
23
+ TP3: 'conductor',
24
+ TPB: 'label',
25
+ TT1: 'grouping',
26
+ TT3: 'subtitle',
27
+ TLA: 'language',
28
+ TCR: 'copyright',
29
+ WCP: 'license',
30
+ TEN: 'encodedby',
31
+ TSS: 'encodersettings',
32
+ WAR: 'website',
33
+ 'COM:iTunPGAP': 'gapless'
34
+ /* ToDo: iTunes tags:
35
+ 'COM:iTunNORM': ,
36
+ 'COM:iTunSMPB': 'encoder delay',
37
+ 'COM:iTunes_CDDB_IDs'
38
+ */ ,
39
+ PCS: 'podcast',
40
+ TCP: "compilation",
41
+ TDR: 'date',
42
+ TS2: 'albumartistsort',
43
+ TSA: 'albumsort',
44
+ TSC: 'composersort',
45
+ TSP: 'artistsort',
46
+ TST: 'titlesort',
47
+ WFD: 'podcasturl',
48
+ TBP: 'bpm'
49
+ };
50
+ class ID3v22TagMapper extends CaseInsensitiveTagMap_1.CaseInsensitiveTagMap {
51
+ constructor() {
52
+ super(['ID3v2.2'], exports.id3v22TagMap);
53
+ }
54
+ }
55
+ exports.ID3v22TagMapper = ID3v22TagMapper;
56
+ //# sourceMappingURL=ID3v22TagMapper.js.map
@@ -1,14 +1,14 @@
1
- import { IRating, ITag } from '../type';
2
- import { INativeMetadataCollector } from '../common/MetadataCollector';
3
- import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
4
- export declare class ID3v24TagMapper extends CaseInsensitiveTagMap {
5
- static toRating(popm: any): IRating;
6
- constructor();
7
- /**
8
- * Handle post mapping exceptions / correction
9
- * @param {string} tag to post map
10
- * @param warnings USed to register warnings
11
- * @return Common value e.g. "Buena Vista Social Club"
12
- */
13
- protected postMap(tag: ITag, warnings: INativeMetadataCollector): void;
14
- }
1
+ import { INativeMetadataCollector } from '../common/MetadataCollector';
2
+ import { CaseInsensitiveTagMap } from '../common/CaseInsensitiveTagMap';
3
+ import { IRating, ITag } from '../type';
4
+ export declare class ID3v24TagMapper extends CaseInsensitiveTagMap {
5
+ static toRating(popm: any): IRating;
6
+ constructor();
7
+ /**
8
+ * Handle post mapping exceptions / correction
9
+ * @param {string} tag to post map
10
+ * @param warnings USed to register warnings
11
+ * @return Common value e.g. "Buena Vista Social Club"
12
+ */
13
+ protected postMap(tag: ITag, warnings: INativeMetadataCollector): void;
14
+ }
@@ -1,193 +1,194 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ID3v24TagMapper = void 0;
4
- const GenericTagMapper_1 = require("../common/GenericTagMapper");
5
- const util = require("../common/Util");
6
- const CaseInsensitiveTagMap_1 = require("../common/CaseInsensitiveTagMap");
7
- /**
8
- * ID3v2.3/ID3v2.4 tag mappings
9
- */
10
- const id3v24TagMap = {
11
- // id3v2.3
12
- TIT2: 'title',
13
- TPE1: 'artist',
14
- 'TXXX:Artists': 'artists',
15
- TPE2: 'albumartist',
16
- TALB: 'album',
17
- TDRV: 'date',
18
- /**
19
- * Original release year
20
- */
21
- TORY: 'originalyear',
22
- TPOS: 'disk',
23
- TCON: 'genre',
24
- APIC: 'picture',
25
- TCOM: 'composer',
26
- 'USLT:description': 'lyrics',
27
- TSOA: 'albumsort',
28
- TSOT: 'titlesort',
29
- TOAL: 'originalalbum',
30
- TSOP: 'artistsort',
31
- TSO2: 'albumartistsort',
32
- TSOC: 'composersort',
33
- TEXT: 'lyricist',
34
- 'TXXX:Writer': 'writer',
35
- TPE3: 'conductor',
36
- // 'IPLS:instrument': 'performer:instrument', // ToDo
37
- TPE4: 'remixer',
38
- 'IPLS:arranger': 'arranger',
39
- 'IPLS:engineer': 'engineer',
40
- 'IPLS:producer': 'producer',
41
- 'IPLS:DJ-mix': 'djmixer',
42
- 'IPLS:mix': 'mixer',
43
- TPUB: 'label',
44
- TIT1: 'grouping',
45
- TIT3: 'subtitle',
46
- TRCK: 'track',
47
- TCMP: 'compilation',
48
- POPM: 'rating',
49
- TBPM: 'bpm',
50
- TMED: 'media',
51
- 'TXXX:CATALOGNUMBER': 'catalognumber',
52
- 'TXXX:MusicBrainz Album Status': 'releasestatus',
53
- 'TXXX:MusicBrainz Album Type': 'releasetype',
54
- /**
55
- * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0
56
- */
57
- 'TXXX:MusicBrainz Album Release Country': 'releasecountry',
58
- /**
59
- * Release country as implemented // ToDo: report
60
- */
61
- 'TXXX:RELEASECOUNTRY': 'releasecountry',
62
- 'TXXX:SCRIPT': 'script',
63
- TLAN: 'language',
64
- TCOP: 'copyright',
65
- WCOP: 'license',
66
- TENC: 'encodedby',
67
- TSSE: 'encodersettings',
68
- 'TXXX:BARCODE': 'barcode',
69
- 'TXXX:ISRC': 'isrc',
70
- TSRC: 'isrc',
71
- 'TXXX:ASIN': 'asin',
72
- 'TXXX:originalyear': 'originalyear',
73
- 'UFID:http://musicbrainz.org': 'musicbrainz_recordingid',
74
- 'TXXX:MusicBrainz Release Track Id': 'musicbrainz_trackid',
75
- 'TXXX:MusicBrainz Album Id': 'musicbrainz_albumid',
76
- 'TXXX:MusicBrainz Artist Id': 'musicbrainz_artistid',
77
- 'TXXX:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',
78
- 'TXXX:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',
79
- 'TXXX:MusicBrainz Work Id': 'musicbrainz_workid',
80
- 'TXXX:MusicBrainz TRM Id': 'musicbrainz_trmid',
81
- 'TXXX:MusicBrainz Disc Id': 'musicbrainz_discid',
82
- 'TXXX:ACOUSTID_ID': 'acoustid_id',
83
- 'TXXX:Acoustid Id': 'acoustid_id',
84
- 'TXXX:Acoustid Fingerprint': 'acoustid_fingerprint',
85
- 'TXXX:MusicIP PUID': 'musicip_puid',
86
- 'TXXX:MusicMagic Fingerprint': 'musicip_fingerprint',
87
- WOAR: 'website',
88
- // id3v2.4
89
- // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames
90
- TDRC: 'date',
91
- TYER: 'year',
92
- TDOR: 'originaldate',
93
- // 'TMCL:instrument': 'performer:instrument',
94
- 'TIPL:arranger': 'arranger',
95
- 'TIPL:engineer': 'engineer',
96
- 'TIPL:producer': 'producer',
97
- 'TIPL:DJ-mix': 'djmixer',
98
- 'TIPL:mix': 'mixer',
99
- TMOO: 'mood',
100
- // additional mappings:
101
- SYLT: 'lyrics',
102
- TSST: 'discsubtitle',
103
- TKEY: 'key',
104
- COMM: 'comment',
105
- TOPE: 'originalartist',
106
- // Windows Media Player
107
- 'PRIV:AverageLevel': 'averageLevel',
108
- 'PRIV:PeakLevel': 'peakLevel',
109
- // Discogs
110
- 'TXXX:DISCOGS_ARTIST_ID': 'discogs_artist_id',
111
- 'TXXX:DISCOGS_ARTISTS': 'artists',
112
- 'TXXX:DISCOGS_ARTIST_NAME': 'artists',
113
- 'TXXX:DISCOGS_ALBUM_ARTISTS': 'albumartist',
114
- 'TXXX:DISCOGS_CATALOG': 'catalognumber',
115
- 'TXXX:DISCOGS_COUNTRY': 'releasecountry',
116
- 'TXXX:DISCOGS_DATE': 'originaldate',
117
- 'TXXX:DISCOGS_LABEL': 'label',
118
- 'TXXX:DISCOGS_LABEL_ID': 'discogs_label_id',
119
- 'TXXX:DISCOGS_MASTER_RELEASE_ID': 'discogs_master_release_id',
120
- 'TXXX:DISCOGS_RATING': 'discogs_rating',
121
- 'TXXX:DISCOGS_RELEASED': 'date',
122
- 'TXXX:DISCOGS_RELEASE_ID': 'discogs_release_id',
123
- 'TXXX:DISCOGS_VOTES': 'discogs_votes',
124
- 'TXXX:CATALOGID': 'catalognumber',
125
- 'TXXX:STYLE': 'genre',
126
- 'TXXX:REPLAYGAIN_TRACK_PEAK': 'replaygain_track_peak',
127
- 'TXXX:REPLAYGAIN_TRACK_GAIN': 'replaygain_track_gain',
128
- 'TXXX:REPLAYGAIN_ALBUM_PEAK': 'replaygain_album_peak',
129
- 'TXXX:REPLAYGAIN_ALBUM_GAIN': 'replaygain_album_gain',
130
- 'TXXX:MP3GAIN_MINMAX': 'replaygain_track_minmax',
131
- 'TXXX:MP3GAIN_ALBUM_MINMAX': 'replaygain_album_minmax',
132
- 'TXXX:MP3GAIN_UNDO': 'replaygain_undo',
133
- MVNM: 'movement',
134
- MVIN: 'movementIndex',
135
- PCST: 'podcast',
136
- TCAT: 'category',
137
- TDES: 'description',
138
- TDRL: 'date',
139
- TGID: 'podcastId',
140
- TKWD: 'keywords',
141
- WFED: 'podcasturl'
142
- };
143
- class ID3v24TagMapper extends CaseInsensitiveTagMap_1.CaseInsensitiveTagMap {
144
- static toRating(popm) {
145
- return {
146
- source: popm.email,
147
- rating: popm.rating > 0 ? (popm.rating - 1) / 254 * GenericTagMapper_1.CommonTagMapper.maxRatingScore : undefined
148
- };
149
- }
150
- constructor() {
151
- super(['ID3v2.3', 'ID3v2.4'], id3v24TagMap);
152
- }
153
- /**
154
- * Handle post mapping exceptions / correction
155
- * @param {string} tag to post map
156
- * @param warnings USed to register warnings
157
- * @return Common value e.g. "Buena Vista Social Club"
158
- */
159
- postMap(tag, warnings) {
160
- switch (tag.id) {
161
- case 'UFID': // decode MusicBrainz Recording Id
162
- if (tag.value.owner_identifier === 'http://musicbrainz.org') {
163
- tag.id += ':' + tag.value.owner_identifier;
164
- tag.value = util.decodeString(tag.value.identifier, 'latin1'); // latin1 == iso-8859-1
165
- }
166
- break;
167
- case 'PRIV':
168
- switch (tag.value.owner_identifier) {
169
- // decode Windows Media Player
170
- case 'AverageLevel':
171
- case 'PeakValue':
172
- tag.id += ':' + tag.value.owner_identifier;
173
- tag.value = tag.value.data.length === 4 ? tag.value.data.readUInt32LE(0) : null;
174
- if (tag.value === null) {
175
- warnings.addWarning(`Failed to parse PRIV:PeakValue`);
176
- }
177
- break;
178
- default:
179
- warnings.addWarning(`Unknown PRIV owner-identifier: ${tag.value.owner_identifier}`);
180
- }
181
- break;
182
- case 'COMM':
183
- tag.value = tag.value ? tag.value.text : null;
184
- break;
185
- case 'POPM':
186
- tag.value = ID3v24TagMapper.toRating(tag.value);
187
- break;
188
- default:
189
- break;
190
- }
191
- }
192
- }
193
- exports.ID3v24TagMapper = ID3v24TagMapper;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ID3v24TagMapper = void 0;
4
+ const GenericTagMapper_1 = require("../common/GenericTagMapper");
5
+ const CaseInsensitiveTagMap_1 = require("../common/CaseInsensitiveTagMap");
6
+ const util = require("../common/Util");
7
+ /**
8
+ * ID3v2.3/ID3v2.4 tag mappings
9
+ */
10
+ const id3v24TagMap = {
11
+ // id3v2.3
12
+ TIT2: 'title',
13
+ TPE1: 'artist',
14
+ 'TXXX:Artists': 'artists',
15
+ TPE2: 'albumartist',
16
+ TALB: 'album',
17
+ TDRV: 'date',
18
+ /**
19
+ * Original release year
20
+ */
21
+ TORY: 'originalyear',
22
+ TPOS: 'disk',
23
+ TCON: 'genre',
24
+ APIC: 'picture',
25
+ TCOM: 'composer',
26
+ 'USLT:description': 'lyrics',
27
+ TSOA: 'albumsort',
28
+ TSOT: 'titlesort',
29
+ TOAL: 'originalalbum',
30
+ TSOP: 'artistsort',
31
+ TSO2: 'albumartistsort',
32
+ TSOC: 'composersort',
33
+ TEXT: 'lyricist',
34
+ 'TXXX:Writer': 'writer',
35
+ TPE3: 'conductor',
36
+ // 'IPLS:instrument': 'performer:instrument', // ToDo
37
+ TPE4: 'remixer',
38
+ 'IPLS:arranger': 'arranger',
39
+ 'IPLS:engineer': 'engineer',
40
+ 'IPLS:producer': 'producer',
41
+ 'IPLS:DJ-mix': 'djmixer',
42
+ 'IPLS:mix': 'mixer',
43
+ TPUB: 'label',
44
+ TIT1: 'grouping',
45
+ TIT3: 'subtitle',
46
+ TRCK: 'track',
47
+ TCMP: 'compilation',
48
+ POPM: 'rating',
49
+ TBPM: 'bpm',
50
+ TMED: 'media',
51
+ 'TXXX:CATALOGNUMBER': 'catalognumber',
52
+ 'TXXX:MusicBrainz Album Status': 'releasestatus',
53
+ 'TXXX:MusicBrainz Album Type': 'releasetype',
54
+ /**
55
+ * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0
56
+ */
57
+ 'TXXX:MusicBrainz Album Release Country': 'releasecountry',
58
+ /**
59
+ * Release country as implemented // ToDo: report
60
+ */
61
+ 'TXXX:RELEASECOUNTRY': 'releasecountry',
62
+ 'TXXX:SCRIPT': 'script',
63
+ TLAN: 'language',
64
+ TCOP: 'copyright',
65
+ WCOP: 'license',
66
+ TENC: 'encodedby',
67
+ TSSE: 'encodersettings',
68
+ 'TXXX:BARCODE': 'barcode',
69
+ 'TXXX:ISRC': 'isrc',
70
+ TSRC: 'isrc',
71
+ 'TXXX:ASIN': 'asin',
72
+ 'TXXX:originalyear': 'originalyear',
73
+ 'UFID:http://musicbrainz.org': 'musicbrainz_recordingid',
74
+ 'TXXX:MusicBrainz Release Track Id': 'musicbrainz_trackid',
75
+ 'TXXX:MusicBrainz Album Id': 'musicbrainz_albumid',
76
+ 'TXXX:MusicBrainz Artist Id': 'musicbrainz_artistid',
77
+ 'TXXX:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',
78
+ 'TXXX:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',
79
+ 'TXXX:MusicBrainz Work Id': 'musicbrainz_workid',
80
+ 'TXXX:MusicBrainz TRM Id': 'musicbrainz_trmid',
81
+ 'TXXX:MusicBrainz Disc Id': 'musicbrainz_discid',
82
+ 'TXXX:ACOUSTID_ID': 'acoustid_id',
83
+ 'TXXX:Acoustid Id': 'acoustid_id',
84
+ 'TXXX:Acoustid Fingerprint': 'acoustid_fingerprint',
85
+ 'TXXX:MusicIP PUID': 'musicip_puid',
86
+ 'TXXX:MusicMagic Fingerprint': 'musicip_fingerprint',
87
+ WOAR: 'website',
88
+ // id3v2.4
89
+ // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames
90
+ TDRC: 'date',
91
+ TYER: 'year',
92
+ TDOR: 'originaldate',
93
+ // 'TMCL:instrument': 'performer:instrument',
94
+ 'TIPL:arranger': 'arranger',
95
+ 'TIPL:engineer': 'engineer',
96
+ 'TIPL:producer': 'producer',
97
+ 'TIPL:DJ-mix': 'djmixer',
98
+ 'TIPL:mix': 'mixer',
99
+ TMOO: 'mood',
100
+ // additional mappings:
101
+ SYLT: 'lyrics',
102
+ TSST: 'discsubtitle',
103
+ TKEY: 'key',
104
+ COMM: 'comment',
105
+ TOPE: 'originalartist',
106
+ // Windows Media Player
107
+ 'PRIV:AverageLevel': 'averageLevel',
108
+ 'PRIV:PeakLevel': 'peakLevel',
109
+ // Discogs
110
+ 'TXXX:DISCOGS_ARTIST_ID': 'discogs_artist_id',
111
+ 'TXXX:DISCOGS_ARTISTS': 'artists',
112
+ 'TXXX:DISCOGS_ARTIST_NAME': 'artists',
113
+ 'TXXX:DISCOGS_ALBUM_ARTISTS': 'albumartist',
114
+ 'TXXX:DISCOGS_CATALOG': 'catalognumber',
115
+ 'TXXX:DISCOGS_COUNTRY': 'releasecountry',
116
+ 'TXXX:DISCOGS_DATE': 'originaldate',
117
+ 'TXXX:DISCOGS_LABEL': 'label',
118
+ 'TXXX:DISCOGS_LABEL_ID': 'discogs_label_id',
119
+ 'TXXX:DISCOGS_MASTER_RELEASE_ID': 'discogs_master_release_id',
120
+ 'TXXX:DISCOGS_RATING': 'discogs_rating',
121
+ 'TXXX:DISCOGS_RELEASED': 'date',
122
+ 'TXXX:DISCOGS_RELEASE_ID': 'discogs_release_id',
123
+ 'TXXX:DISCOGS_VOTES': 'discogs_votes',
124
+ 'TXXX:CATALOGID': 'catalognumber',
125
+ 'TXXX:STYLE': 'genre',
126
+ 'TXXX:REPLAYGAIN_TRACK_PEAK': 'replaygain_track_peak',
127
+ 'TXXX:REPLAYGAIN_TRACK_GAIN': 'replaygain_track_gain',
128
+ 'TXXX:REPLAYGAIN_ALBUM_PEAK': 'replaygain_album_peak',
129
+ 'TXXX:REPLAYGAIN_ALBUM_GAIN': 'replaygain_album_gain',
130
+ 'TXXX:MP3GAIN_MINMAX': 'replaygain_track_minmax',
131
+ 'TXXX:MP3GAIN_ALBUM_MINMAX': 'replaygain_album_minmax',
132
+ 'TXXX:MP3GAIN_UNDO': 'replaygain_undo',
133
+ MVNM: 'movement',
134
+ MVIN: 'movementIndex',
135
+ PCST: 'podcast',
136
+ TCAT: 'category',
137
+ TDES: 'description',
138
+ TDRL: 'date',
139
+ TGID: 'podcastId',
140
+ TKWD: 'keywords',
141
+ WFED: 'podcasturl'
142
+ };
143
+ class ID3v24TagMapper extends CaseInsensitiveTagMap_1.CaseInsensitiveTagMap {
144
+ static toRating(popm) {
145
+ return {
146
+ source: popm.email,
147
+ rating: popm.rating > 0 ? (popm.rating - 1) / 254 * GenericTagMapper_1.CommonTagMapper.maxRatingScore : undefined
148
+ };
149
+ }
150
+ constructor() {
151
+ super(['ID3v2.3', 'ID3v2.4'], id3v24TagMap);
152
+ }
153
+ /**
154
+ * Handle post mapping exceptions / correction
155
+ * @param {string} tag to post map
156
+ * @param warnings USed to register warnings
157
+ * @return Common value e.g. "Buena Vista Social Club"
158
+ */
159
+ postMap(tag, warnings) {
160
+ switch (tag.id) {
161
+ case 'UFID': // decode MusicBrainz Recording Id
162
+ if (tag.value.owner_identifier === 'http://musicbrainz.org') {
163
+ tag.id += ':' + tag.value.owner_identifier;
164
+ tag.value = util.decodeString(tag.value.identifier, 'latin1'); // latin1 == iso-8859-1
165
+ }
166
+ break;
167
+ case 'PRIV':
168
+ switch (tag.value.owner_identifier) {
169
+ // decode Windows Media Player
170
+ case 'AverageLevel':
171
+ case 'PeakValue':
172
+ tag.id += ':' + tag.value.owner_identifier;
173
+ tag.value = tag.value.data.length === 4 ? tag.value.data.readUInt32LE(0) : null;
174
+ if (tag.value === null) {
175
+ warnings.addWarning(`Failed to parse PRIV:PeakValue`);
176
+ }
177
+ break;
178
+ default:
179
+ warnings.addWarning(`Unknown PRIV owner-identifier: ${tag.value.owner_identifier}`);
180
+ }
181
+ break;
182
+ case 'COMM':
183
+ tag.value = tag.value ? tag.value.text : null;
184
+ break;
185
+ case 'POPM':
186
+ tag.value = ID3v24TagMapper.toRating(tag.value);
187
+ break;
188
+ default:
189
+ break;
190
+ }
191
+ }
192
+ }
193
+ exports.ID3v24TagMapper = ID3v24TagMapper;
194
+ //# sourceMappingURL=ID3v24TagMapper.js.map
@@ -1,29 +1,29 @@
1
- /// <reference types="node" />
2
- import { ITokenizer } from 'strtok3/lib/core';
3
- import { IOptions } from '../type';
4
- import { INativeMetadataCollector } from '../common/MetadataCollector';
5
- export declare class ID3v2Parser {
6
- static removeUnsyncBytes(buffer: Buffer): Buffer;
7
- private static getFrameHeaderLength;
8
- private static readFrameFlags;
9
- private static readFrameData;
10
- /**
11
- * Create a combined tag key, of tag & description
12
- * @param {string} tag e.g.: COM
13
- * @param {string} description e.g. iTunPGAP
14
- * @returns {string} e.g. COM:iTunPGAP
15
- */
16
- private static makeDescriptionTagName;
17
- private tokenizer;
18
- private id3Header;
19
- private metadata;
20
- private headerType;
21
- private options;
22
- parse(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<void>;
23
- parseExtendedHeader(): Promise<void>;
24
- parseExtendedHeaderData(dataRemaining: number, extendedHeaderSize: number): Promise<void>;
25
- parseId3Data(dataLen: number): Promise<void>;
26
- private addTag;
27
- private parseMetadata;
28
- private readFrameHeader;
29
- }
1
+ /// <reference types="node" />
2
+ import { ITokenizer } from 'strtok3/lib/core';
3
+ import { IOptions } from '../type';
4
+ import { INativeMetadataCollector } from '../common/MetadataCollector';
5
+ export declare class ID3v2Parser {
6
+ static removeUnsyncBytes(buffer: Buffer): Buffer;
7
+ private static getFrameHeaderLength;
8
+ private static readFrameFlags;
9
+ private static readFrameData;
10
+ /**
11
+ * Create a combined tag key, of tag & description
12
+ * @param {string} tag e.g.: COM
13
+ * @param {string} description e.g. iTunPGAP
14
+ * @returns {string} e.g. COM:iTunPGAP
15
+ */
16
+ private static makeDescriptionTagName;
17
+ private tokenizer;
18
+ private id3Header;
19
+ private metadata;
20
+ private headerType;
21
+ private options;
22
+ parse(metadata: INativeMetadataCollector, tokenizer: ITokenizer, options: IOptions): Promise<void>;
23
+ parseExtendedHeader(): Promise<void>;
24
+ parseExtendedHeaderData(dataRemaining: number, extendedHeaderSize: number): Promise<void>;
25
+ parseId3Data(dataLen: number): Promise<void>;
26
+ private addTag;
27
+ private parseMetadata;
28
+ private readFrameHeader;
29
+ }