music-metadata 8.3.0 → 9.0.1
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.
- package/LICENSE.txt +9 -9
- package/README.md +519 -488
- package/lib/ParserFactory.d.ts +1 -1
- package/lib/ParserFactory.js +1 -2
- package/lib/aiff/AiffParser.js +3 -4
- package/lib/aiff/AiffToken.d.ts +2 -4
- package/lib/aiff/AiffToken.js +7 -7
- package/lib/apev2/APEv2Parser.d.ts +1 -1
- package/lib/apev2/APEv2Parser.js +10 -12
- package/lib/apev2/APEv2Token.d.ts +1 -1
- package/lib/asf/AsfObject.d.ts +15 -17
- package/lib/asf/AsfObject.js +51 -45
- package/lib/asf/AsfParser.js +6 -8
- package/lib/asf/AsfUtil.d.ts +1 -3
- package/lib/asf/AsfUtil.js +4 -5
- package/lib/asf/GUID.d.ts +4 -5
- package/lib/asf/GUID.js +14 -11
- package/lib/common/BasicParser.d.ts +1 -1
- package/lib/common/FourCC.d.ts +1 -1
- package/lib/common/FourCC.js +5 -3
- package/lib/common/MetadataCollector.d.ts +3 -3
- package/lib/common/MetadataCollector.js +7 -8
- package/lib/common/RandomFileReader.d.ts +2 -3
- package/lib/common/RandomFileReader.js +1 -1
- package/lib/common/Util.d.ts +1 -1
- package/lib/common/Util.js +4 -3
- package/lib/core.d.ts +16 -8
- package/lib/core.js +19 -5
- package/lib/dsdiff/DsdiffParser.js +1 -1
- package/lib/dsdiff/DsdiffToken.d.ts +1 -1
- package/lib/dsf/DsfChunk.d.ts +1 -1
- package/lib/flac/FlacParser.d.ts +1 -1
- package/lib/flac/FlacParser.js +6 -4
- package/lib/id3v1/ID3v1Parser.js +7 -7
- package/lib/id3v2/AbstractID3Parser.d.ts +1 -1
- package/lib/id3v2/AbstractID3Parser.js +1 -1
- package/lib/id3v2/FrameParser.js +3 -3
- package/lib/id3v2/ID3v24TagMapper.d.ts +2 -3
- package/lib/id3v2/ID3v24TagMapper.js +4 -4
- package/lib/id3v2/ID3v2Parser.d.ts +1 -1
- package/lib/id3v2/ID3v2Parser.js +10 -17
- package/lib/id3v2/ID3v2Token.d.ts +1 -1
- package/lib/id3v2/ID3v2Token.js +2 -2
- package/lib/iff/index.d.ts +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.js +1 -1
- package/lib/lyrics3/Lyrics3.js +4 -4
- package/lib/matroska/MatroskaParser.d.ts +9 -2
- package/lib/matroska/MatroskaParser.js +44 -39
- package/lib/matroska/types.d.ts +13 -14
- package/lib/mp4/Atom.d.ts +1 -1
- package/lib/mp4/AtomToken.d.ts +11 -11
- package/lib/mp4/AtomToken.js +3 -2
- package/lib/mp4/MP4Parser.js +20 -19
- package/lib/mpeg/ExtendedLameHeader.d.ts +1 -1
- package/lib/mpeg/MpegParser.js +4 -4
- package/lib/mpeg/ReplayGainDataFormat.d.ts +1 -1
- package/lib/mpeg/XingTag.d.ts +2 -3
- package/lib/mpeg/XingTag.js +1 -1
- package/lib/musepack/index.js +1 -1
- package/lib/musepack/sv7/BitReader.d.ts +1 -1
- package/lib/musepack/sv7/StreamVersion7.d.ts +1 -1
- package/lib/musepack/sv7/StreamVersion7.js +1 -1
- package/lib/musepack/sv8/StreamVersion8.d.ts +1 -1
- package/lib/musepack/sv8/StreamVersion8.js +1 -1
- package/lib/ogg/Ogg.d.ts +2 -2
- package/lib/ogg/OggParser.d.ts +1 -1
- package/lib/ogg/OggParser.js +5 -5
- package/lib/ogg/opus/Opus.d.ts +1 -1
- package/lib/ogg/opus/Opus.js +6 -6
- package/lib/ogg/opus/OpusParser.d.ts +4 -5
- package/lib/ogg/opus/OpusParser.js +3 -3
- package/lib/ogg/speex/Speex.d.ts +1 -1
- package/lib/ogg/speex/Speex.js +13 -13
- package/lib/ogg/speex/SpeexParser.d.ts +3 -4
- package/lib/ogg/speex/SpeexParser.js +1 -1
- package/lib/ogg/theora/Theora.d.ts +1 -1
- package/lib/ogg/theora/Theora.js +6 -6
- package/lib/ogg/theora/TheoraParser.d.ts +4 -5
- package/lib/ogg/theora/TheoraParser.js +4 -4
- package/lib/ogg/vorbis/Vorbis.d.ts +3 -4
- package/lib/ogg/vorbis/Vorbis.js +11 -12
- package/lib/ogg/vorbis/VorbisDecoder.js +1 -1
- package/lib/ogg/vorbis/VorbisParser.d.ts +8 -8
- package/lib/ogg/vorbis/VorbisParser.js +21 -12
- package/lib/riff/RiffChunk.d.ts +1 -1
- package/lib/riff/RiffChunk.js +2 -2
- package/lib/type.d.ts +9 -11
- package/lib/wav/BwfChunk.d.ts +1 -1
- package/lib/wav/WaveChunk.d.ts +3 -4
- package/lib/wav/WaveChunk.js +8 -7
- package/lib/wav/WaveParser.js +2 -2
- package/lib/wavpack/WavPackParser.d.ts +1 -0
- package/lib/wavpack/WavPackParser.js +5 -3
- package/lib/wavpack/WavPackToken.d.ts +1 -1
- package/package.json +141 -140
|
@@ -8,6 +8,7 @@ export declare class WavPackParser extends BasicParser {
|
|
|
8
8
|
parseWavPackBlocks(): Promise<void>;
|
|
9
9
|
/**
|
|
10
10
|
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks
|
|
11
|
+
* @param header Header
|
|
11
12
|
* @param remainingLength
|
|
12
13
|
*/
|
|
13
14
|
private parseMetadataSubBlock;
|
|
@@ -4,6 +4,7 @@ import { FourCcToken } from '../common/FourCC.js';
|
|
|
4
4
|
import { BasicParser } from '../common/BasicParser.js';
|
|
5
5
|
import { WavPack } from './WavPackToken.js';
|
|
6
6
|
import initDebug from 'debug';
|
|
7
|
+
import { uint8ArrayToHex } from 'uint8array-extras';
|
|
7
8
|
const debug = initDebug('music-metadata:parser:WavPack');
|
|
8
9
|
/**
|
|
9
10
|
* WavPack Parser
|
|
@@ -49,13 +50,14 @@ export class WavPackParser extends BasicParser {
|
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks
|
|
53
|
+
* @param header Header
|
|
52
54
|
* @param remainingLength
|
|
53
55
|
*/
|
|
54
56
|
async parseMetadataSubBlock(header, remainingLength) {
|
|
55
57
|
while (remainingLength > WavPack.MetadataIdToken.len) {
|
|
56
58
|
const id = await this.tokenizer.readToken(WavPack.MetadataIdToken);
|
|
57
59
|
const dataSizeInWords = await this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);
|
|
58
|
-
const data =
|
|
60
|
+
const data = new Uint8Array(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));
|
|
59
61
|
await this.tokenizer.readBuffer(data);
|
|
60
62
|
debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);
|
|
61
63
|
switch (id.functionId) {
|
|
@@ -64,7 +66,7 @@ export class WavPackParser extends BasicParser {
|
|
|
64
66
|
case 0xe: // ID_DSD_BLOCK
|
|
65
67
|
debug('ID_DSD_BLOCK');
|
|
66
68
|
// https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
|
|
67
|
-
const mp = 1 <<
|
|
69
|
+
const mp = 1 << Token.UINT8.get(data, 0);
|
|
68
70
|
const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813
|
|
69
71
|
if (!header.flags.isDSD)
|
|
70
72
|
throw new Error('Only expect DSD block if DSD-flag is set');
|
|
@@ -78,7 +80,7 @@ export class WavPackParser extends BasicParser {
|
|
|
78
80
|
this.metadata.setFormat('audioMD5', data);
|
|
79
81
|
break;
|
|
80
82
|
case 0x2f: // ID_BLOCK_CHECKSUM
|
|
81
|
-
debug(`ID_BLOCK_CHECKSUM: checksum=${data
|
|
83
|
+
debug(`ID_BLOCK_CHECKSUM: checksum=${uint8ArrayToHex(data)}`);
|
|
82
84
|
break;
|
|
83
85
|
default:
|
|
84
86
|
debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);
|
package/package.json
CHANGED
|
@@ -1,140 +1,141 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "music-metadata",
|
|
3
|
-
"description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
|
|
4
|
-
"version": "
|
|
5
|
-
"author": {
|
|
6
|
-
"name": "Borewit",
|
|
7
|
-
"url": "https://github.com/Borewit"
|
|
8
|
-
},
|
|
9
|
-
"funding": {
|
|
10
|
-
"type": "github",
|
|
11
|
-
"url": "https://github.com/sponsors/Borewit"
|
|
12
|
-
},
|
|
13
|
-
"type": "module",
|
|
14
|
-
"exports": {
|
|
15
|
-
".": {
|
|
16
|
-
"node": "./lib/index.js",
|
|
17
|
-
"default": "./lib/core.js"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
"types": "lib/index.d.ts",
|
|
21
|
-
"files": [
|
|
22
|
-
"lib/**/*.js",
|
|
23
|
-
"lib/**/*.d.ts"
|
|
24
|
-
],
|
|
25
|
-
"keywords": [
|
|
26
|
-
"music",
|
|
27
|
-
"metadata",
|
|
28
|
-
"meta",
|
|
29
|
-
"audio",
|
|
30
|
-
"tag",
|
|
31
|
-
"tags",
|
|
32
|
-
"duration",
|
|
33
|
-
"MusicBrainz",
|
|
34
|
-
"Discogs",
|
|
35
|
-
"Picard",
|
|
36
|
-
"ID3",
|
|
37
|
-
"ID3v1",
|
|
38
|
-
"ID3v2",
|
|
39
|
-
"m4a",
|
|
40
|
-
"m4b",
|
|
41
|
-
"mp3",
|
|
42
|
-
"mp4",
|
|
43
|
-
"Vorbis",
|
|
44
|
-
"ogg",
|
|
45
|
-
"flac",
|
|
46
|
-
"Matroska",
|
|
47
|
-
"WebM",
|
|
48
|
-
"EBML",
|
|
49
|
-
"asf",
|
|
50
|
-
"wma",
|
|
51
|
-
"wmv",
|
|
52
|
-
"ape",
|
|
53
|
-
"MonkeyAudio",
|
|
54
|
-
"aiff",
|
|
55
|
-
"wav",
|
|
56
|
-
"WavPack",
|
|
57
|
-
"Opus",
|
|
58
|
-
"speex",
|
|
59
|
-
"musepack",
|
|
60
|
-
"mpc",
|
|
61
|
-
"dsd",
|
|
62
|
-
"dsf",
|
|
63
|
-
"mpc",
|
|
64
|
-
"dff",
|
|
65
|
-
"dsdiff",
|
|
66
|
-
"aac",
|
|
67
|
-
"adts",
|
|
68
|
-
"length",
|
|
69
|
-
"chapter",
|
|
70
|
-
"info",
|
|
71
|
-
"parse",
|
|
72
|
-
"parser",
|
|
73
|
-
"bwf"
|
|
74
|
-
],
|
|
75
|
-
"scripts": {
|
|
76
|
-
"clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
|
|
77
|
-
"compile-src": "tsc -p lib",
|
|
78
|
-
"compile-test": "tsc -p test",
|
|
79
|
-
"compile-doc": "tsc -p doc-gen",
|
|
80
|
-
"compile": "npm run compile-src && npm run compile-test && npm run compile-doc",
|
|
81
|
-
"eslint": "eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
|
|
82
|
-
"lint-md": "remark -u preset-lint-markdown-style-guide .",
|
|
83
|
-
"lint": "npm run lint-md && npm run eslint",
|
|
84
|
-
"test": "mocha",
|
|
85
|
-
"build": "npm run clean && npm run compile && npm run doc-gen",
|
|
86
|
-
"start": "npm-run-all compile lint cover-test",
|
|
87
|
-
"test-coverage": "c8 npm run test",
|
|
88
|
-
"send-codacy": "c8 report --reporter=text-lcov | codacy-coverage",
|
|
89
|
-
"doc-gen": "node doc-gen/gen.js"
|
|
90
|
-
},
|
|
91
|
-
"dependencies": {
|
|
92
|
-
"@tokenizer/token": "^0.3.0",
|
|
93
|
-
"content-type": "^1.0.5",
|
|
94
|
-
"debug": "^4.3.4",
|
|
95
|
-
"file-type": "^
|
|
96
|
-
"media-typer": "^1.1.0",
|
|
97
|
-
"strtok3": "^7.
|
|
98
|
-
"token-types": "^
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
"@types/chai
|
|
103
|
-
"@types/
|
|
104
|
-
"@types/
|
|
105
|
-
"@types/
|
|
106
|
-
"@types/
|
|
107
|
-
"@
|
|
108
|
-
"@typescript-eslint/
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"chai
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"eslint
|
|
115
|
-
"eslint-
|
|
116
|
-
"eslint-
|
|
117
|
-
"eslint-plugin-
|
|
118
|
-
"eslint-plugin-
|
|
119
|
-
"eslint-plugin-
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"remark-
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
"
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "music-metadata",
|
|
3
|
+
"description": "Music metadata parser for Node.js, supporting virtual any audio and tag format.",
|
|
4
|
+
"version": "9.0.1",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Borewit",
|
|
7
|
+
"url": "https://github.com/Borewit"
|
|
8
|
+
},
|
|
9
|
+
"funding": {
|
|
10
|
+
"type": "github",
|
|
11
|
+
"url": "https://github.com/sponsors/Borewit"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"node": "./lib/index.js",
|
|
17
|
+
"default": "./lib/core.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"types": "lib/index.d.ts",
|
|
21
|
+
"files": [
|
|
22
|
+
"lib/**/*.js",
|
|
23
|
+
"lib/**/*.d.ts"
|
|
24
|
+
],
|
|
25
|
+
"keywords": [
|
|
26
|
+
"music",
|
|
27
|
+
"metadata",
|
|
28
|
+
"meta",
|
|
29
|
+
"audio",
|
|
30
|
+
"tag",
|
|
31
|
+
"tags",
|
|
32
|
+
"duration",
|
|
33
|
+
"MusicBrainz",
|
|
34
|
+
"Discogs",
|
|
35
|
+
"Picard",
|
|
36
|
+
"ID3",
|
|
37
|
+
"ID3v1",
|
|
38
|
+
"ID3v2",
|
|
39
|
+
"m4a",
|
|
40
|
+
"m4b",
|
|
41
|
+
"mp3",
|
|
42
|
+
"mp4",
|
|
43
|
+
"Vorbis",
|
|
44
|
+
"ogg",
|
|
45
|
+
"flac",
|
|
46
|
+
"Matroska",
|
|
47
|
+
"WebM",
|
|
48
|
+
"EBML",
|
|
49
|
+
"asf",
|
|
50
|
+
"wma",
|
|
51
|
+
"wmv",
|
|
52
|
+
"ape",
|
|
53
|
+
"MonkeyAudio",
|
|
54
|
+
"aiff",
|
|
55
|
+
"wav",
|
|
56
|
+
"WavPack",
|
|
57
|
+
"Opus",
|
|
58
|
+
"speex",
|
|
59
|
+
"musepack",
|
|
60
|
+
"mpc",
|
|
61
|
+
"dsd",
|
|
62
|
+
"dsf",
|
|
63
|
+
"mpc",
|
|
64
|
+
"dff",
|
|
65
|
+
"dsdiff",
|
|
66
|
+
"aac",
|
|
67
|
+
"adts",
|
|
68
|
+
"length",
|
|
69
|
+
"chapter",
|
|
70
|
+
"info",
|
|
71
|
+
"parse",
|
|
72
|
+
"parser",
|
|
73
|
+
"bwf"
|
|
74
|
+
],
|
|
75
|
+
"scripts": {
|
|
76
|
+
"clean": "del-cli lib/**/*.js lib/**/*.js.map lib/**/*.d.ts src/**/*.d.ts test/**/*.js test/**/*.js.map test/**/*.js test/**/*.js.map doc-gen/**/*.js doc-gen/**/*.js.map",
|
|
77
|
+
"compile-src": "tsc -p lib",
|
|
78
|
+
"compile-test": "tsc -p test",
|
|
79
|
+
"compile-doc": "tsc -p doc-gen",
|
|
80
|
+
"compile": "npm run compile-src && npm run compile-test && npm run compile-doc",
|
|
81
|
+
"eslint": "npx eslint lib/**/*.ts --ignore-pattern lib/**/*.d.ts example/typescript/**/*.ts test/**/*.ts doc-gen/**/*.ts",
|
|
82
|
+
"lint-md": "remark -u preset-lint-markdown-style-guide .",
|
|
83
|
+
"lint": "npm run lint-md && npm run eslint",
|
|
84
|
+
"test": "mocha",
|
|
85
|
+
"build": "npm run clean && npm run compile && npm run doc-gen",
|
|
86
|
+
"start": "npm-run-all compile lint cover-test",
|
|
87
|
+
"test-coverage": "c8 npm run test",
|
|
88
|
+
"send-codacy": "c8 report --reporter=text-lcov | codacy-coverage",
|
|
89
|
+
"doc-gen": "node doc-gen/gen.js"
|
|
90
|
+
},
|
|
91
|
+
"dependencies": {
|
|
92
|
+
"@tokenizer/token": "^0.3.0",
|
|
93
|
+
"content-type": "^1.0.5",
|
|
94
|
+
"debug": "^4.3.4",
|
|
95
|
+
"file-type": "^19.1.1",
|
|
96
|
+
"media-typer": "^1.1.0",
|
|
97
|
+
"strtok3": "^7.1.0",
|
|
98
|
+
"token-types": "^6.0.0",
|
|
99
|
+
"uint8array-extras": "^1.3.0"
|
|
100
|
+
},
|
|
101
|
+
"devDependencies": {
|
|
102
|
+
"@types/chai": "^4.3.16",
|
|
103
|
+
"@types/chai-as-promised": "^7.1.8",
|
|
104
|
+
"@types/debug": "^4.1.12",
|
|
105
|
+
"@types/file-type": "^10.9.1",
|
|
106
|
+
"@types/mocha": "^10.0.7",
|
|
107
|
+
"@types/node": "^20.14.10",
|
|
108
|
+
"@typescript-eslint/eslint-plugin": "^7.16.0",
|
|
109
|
+
"@typescript-eslint/parser": "^7.16.0",
|
|
110
|
+
"c8": "^10.1.2",
|
|
111
|
+
"chai": "^5.1.1",
|
|
112
|
+
"chai-as-promised": "^8.0.0",
|
|
113
|
+
"del-cli": "^5.1.0",
|
|
114
|
+
"eslint": "^8.57.0",
|
|
115
|
+
"eslint-config-prettier": "^9.1.0",
|
|
116
|
+
"eslint-import-resolver-typescript": "^3.6.1",
|
|
117
|
+
"eslint-plugin-import": "^2.29.1",
|
|
118
|
+
"eslint-plugin-jsdoc": "^48.7.0",
|
|
119
|
+
"eslint-plugin-node": "^11.1.0",
|
|
120
|
+
"eslint-plugin-unicorn": "^54.0.0",
|
|
121
|
+
"mime": "^4.0.4",
|
|
122
|
+
"mocha": "^10.6.0",
|
|
123
|
+
"npm-run-all": "^4.1.5",
|
|
124
|
+
"prettier": "^3.3.2",
|
|
125
|
+
"remark-cli": "^12.0.1",
|
|
126
|
+
"remark-preset-lint-markdown-style-guide": "^6.0.0",
|
|
127
|
+
"ts-node": "^10.9.2",
|
|
128
|
+
"typescript": "^5.5.3"
|
|
129
|
+
},
|
|
130
|
+
"engines": {
|
|
131
|
+
"node": ">=16.0.0"
|
|
132
|
+
},
|
|
133
|
+
"repository": {
|
|
134
|
+
"type": "git",
|
|
135
|
+
"url": "git+https://github.com/borewit/music-metadata.git"
|
|
136
|
+
},
|
|
137
|
+
"license": "MIT",
|
|
138
|
+
"bugs": {
|
|
139
|
+
"url": "https://github.com/Borewit/music-metadata/issues"
|
|
140
|
+
}
|
|
141
|
+
}
|