tserato 0.1.10 → 0.1.11
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/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +0 -1
- package/dist/encoders/v2/v2Mp3Encoder.d.ts +2 -0
- package/dist/encoders/v2/v2Mp3Encoder.d.ts.map +1 -1
- package/dist/encoders/v2/v2Mp3Encoder.js +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/model/track.d.ts +4 -0
- package/dist/model/track.d.ts.map +1 -1
- package/dist/model/track.js +4 -0
- package/dist/model/trackMeta.d.ts +7 -0
- package/dist/model/trackMeta.d.ts.map +1 -0
- package/dist/model/trackMeta.js +2 -0
- package/package.json +2 -3
- package/src/builder.ts +0 -1
- package/src/encoders/v2/v2Mp3Encoder.ts +15 -0
- package/src/index.ts +1 -0
- package/src/model/track.ts +8 -0
- package/src/model/trackMeta.ts +6 -0
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,eAAO,MAAM,qBAAqB,QAIjC,CAAC;AAEF,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,CAAc;gBACnB,OAAO,CAAC,EAAE,WAAW;IAEjC,OAAO,CAAC,MAAM,CAAE,YAAY;IAc5B,OAAO,CAAC,MAAM,CAAE,gBAAgB;IAKhC,OAAO,CAAE,mBAAmB;IAQ5B,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAoBjE,OAAO,CAAC,wBAAwB;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItC,eAAO,MAAM,qBAAqB,QAIjC,CAAC;AAEF,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,CAAc;gBACnB,OAAO,CAAC,EAAE,WAAW;IAEjC,OAAO,CAAC,MAAM,CAAE,YAAY;IAc5B,OAAO,CAAC,MAAM,CAAE,gBAAgB;IAKhC,OAAO,CAAE,mBAAmB;IAQ5B,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAoBjE,OAAO,CAAC,wBAAwB;IAsChC,OAAO,CAAE,iBAAiB;IA+B1B,OAAO,CAAC,UAAU;IAwDlB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAE,MAA8B,EAAE,SAAS,UAAQ,GAAG,IAAI;CAOrF"}
|
package/dist/builder.js
CHANGED
|
@@ -90,7 +90,6 @@ class Builder {
|
|
|
90
90
|
}
|
|
91
91
|
const tracks = [];
|
|
92
92
|
for (const p of this._parseCrateTracks(filepath)) {
|
|
93
|
-
console.log('make track from path ', p, 'from file path ', filepath);
|
|
94
93
|
tracks.push(track_1.Track.fromPath(p));
|
|
95
94
|
}
|
|
96
95
|
let root = topLevelCrateMap.get(crateNames[0]);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { HotCue } from '../../../src/model/hotCue';
|
|
2
2
|
import { Track } from '../../model/track';
|
|
3
3
|
import { BaseEncoder } from '../baseEncoder';
|
|
4
|
+
import { TrackMeta } from '../../model/trackMeta';
|
|
4
5
|
export declare class V2Mp3Encoder extends BaseEncoder {
|
|
5
6
|
get tagName(): string;
|
|
6
7
|
get tagVersion(): Buffer;
|
|
7
8
|
get markersName(): string;
|
|
8
9
|
write(track: Track): void;
|
|
10
|
+
readMetaData(track: Track): TrackMeta;
|
|
9
11
|
readCues(track: Track): HotCue[];
|
|
10
12
|
private _decode;
|
|
11
13
|
private _removeNullPadding;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2Mp3Encoder.d.ts","sourceRoot":"","sources":["../../../src/encoders/v2/v2Mp3Encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"v2Mp3Encoder.d.ts","sourceRoot":"","sources":["../../../src/encoders/v2/v2Mp3Encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA8BlD,qBAAa,YAAa,SAAQ,WAAW;IAE3C,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKzB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS;IAcrC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;IAoBhC,OAAO,CAAE,OAAO;IAmDhB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM;IAkCd,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;CASvB"}
|
|
@@ -49,6 +49,17 @@ class V2Mp3Encoder extends baseEncoder_1.BaseEncoder {
|
|
|
49
49
|
const payload = this._encode(track);
|
|
50
50
|
this._write(track, payload);
|
|
51
51
|
}
|
|
52
|
+
readMetaData(track) {
|
|
53
|
+
const buffer = fs.readFileSync(track.path.toString());
|
|
54
|
+
const mp3tag = new mp3tag_js_1.default(buffer, true);
|
|
55
|
+
mp3tag.read();
|
|
56
|
+
const v2 = mp3tag.tags.v2;
|
|
57
|
+
return {
|
|
58
|
+
title: v2?.TIT2,
|
|
59
|
+
artist: v2?.TPE1,
|
|
60
|
+
album: v2?.TALB
|
|
61
|
+
};
|
|
62
|
+
}
|
|
52
63
|
readCues(track) {
|
|
53
64
|
// Read the buffer of an audio file
|
|
54
65
|
const buffer = fs.readFileSync(track.path.toString());
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { Builder, DEFAULT_SERATO_FOLDER } from './builder';
|
|
|
2
2
|
export { V2Mp3Encoder } from './encoders/v2/v2Mp3Encoder';
|
|
3
3
|
export { Crate } from './model/crate';
|
|
4
4
|
export { Track } from './model/track';
|
|
5
|
+
export { TrackMeta } from './model/trackMeta';
|
|
5
6
|
export { HotCue } from './model/hotCue';
|
|
6
7
|
export { HotCueType } from './model/hotCueType';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/model/track.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HotCue } from './hotCue';
|
|
2
2
|
import { Tempo } from './tempo';
|
|
3
|
+
import { TrackMeta } from './trackMeta';
|
|
3
4
|
export declare class Track {
|
|
4
5
|
path: string;
|
|
5
6
|
trackId: string;
|
|
@@ -11,6 +12,7 @@ export declare class Track {
|
|
|
11
12
|
beatgrid: Tempo[];
|
|
12
13
|
hotCues: HotCue[];
|
|
13
14
|
cueLoops: HotCue[];
|
|
15
|
+
trackMeta: TrackMeta | null;
|
|
14
16
|
constructor(trackPath: string, params?: {
|
|
15
17
|
trackId?: string;
|
|
16
18
|
averageBpm?: number;
|
|
@@ -21,9 +23,11 @@ export declare class Track {
|
|
|
21
23
|
beatgrid?: Tempo[];
|
|
22
24
|
hotCues?: HotCue[];
|
|
23
25
|
cueLoops?: HotCue[];
|
|
26
|
+
trackMeta?: TrackMeta;
|
|
24
27
|
});
|
|
25
28
|
static fromPath(trackPath: string, userRoot?: string): Track;
|
|
26
29
|
addBeatgridMarker(tempo: Tempo): void;
|
|
27
30
|
addHotCue(hotCue: HotCue): void;
|
|
31
|
+
addTrackMeta(trackMeta: TrackMeta): void;
|
|
28
32
|
}
|
|
29
33
|
//# sourceMappingURL=track.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/model/track.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../../src/model/track.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,KAAK;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;gBAG1B,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,SAAS,CAAC;KAClB;IAgBR,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK;IAQ5D,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIrC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAgB/B,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;CAGzC"}
|
package/dist/model/track.js
CHANGED
|
@@ -48,6 +48,7 @@ class Track {
|
|
|
48
48
|
this.beatgrid = params.beatgrid ?? [];
|
|
49
49
|
this.hotCues = params.hotCues ?? [];
|
|
50
50
|
this.cueLoops = params.cueLoops ?? [];
|
|
51
|
+
this.trackMeta = params.trackMeta ?? null;
|
|
51
52
|
}
|
|
52
53
|
static fromPath(trackPath, userRoot) {
|
|
53
54
|
const resolved = userRoot != null
|
|
@@ -73,5 +74,8 @@ class Track {
|
|
|
73
74
|
this.hotCues.splice(atIndex, 0, hotCue);
|
|
74
75
|
}
|
|
75
76
|
}
|
|
77
|
+
addTrackMeta(trackMeta) {
|
|
78
|
+
this.trackMeta = trackMeta;
|
|
79
|
+
}
|
|
76
80
|
}
|
|
77
81
|
exports.Track = Track;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackMeta.d.ts","sourceRoot":"","sources":["../../src/model/trackMeta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tserato",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"base-64": "^1.0.0",
|
|
26
|
-
"mp3tag.js": "^3.14.1"
|
|
27
|
-
"node-id3": "^0.2.6"
|
|
26
|
+
"mp3tag.js": "^3.14.1"
|
|
28
27
|
}
|
|
29
28
|
}
|
package/src/builder.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { BaseEncoder } from '../baseEncoder';
|
|
|
5
5
|
import { SERATO_MARKERS_V2 } from '../serato_tags';
|
|
6
6
|
import MP3Tag from 'mp3tag.js'
|
|
7
7
|
import { splitString } from '../../util';
|
|
8
|
+
import { TrackMeta } from '../../model/trackMeta';
|
|
8
9
|
|
|
9
10
|
const fs = require('fs')
|
|
10
11
|
|
|
@@ -53,6 +54,20 @@ export class V2Mp3Encoder extends BaseEncoder {
|
|
|
53
54
|
this._write(track, payload);
|
|
54
55
|
}
|
|
55
56
|
|
|
57
|
+
readMetaData(track: Track): TrackMeta {
|
|
58
|
+
const buffer = fs.readFileSync(track.path.toString())
|
|
59
|
+
|
|
60
|
+
const mp3tag = new MP3Tag(buffer, true)
|
|
61
|
+
|
|
62
|
+
mp3tag.read();
|
|
63
|
+
const v2 = mp3tag.tags.v2
|
|
64
|
+
return {
|
|
65
|
+
title: v2?.TIT2,
|
|
66
|
+
artist: v2?.TPE1,
|
|
67
|
+
album: v2?.TALB
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
56
71
|
readCues(track: Track): HotCue[] {
|
|
57
72
|
|
|
58
73
|
// Read the buffer of an audio file
|
package/src/index.ts
CHANGED
|
@@ -2,5 +2,6 @@ export { Builder, DEFAULT_SERATO_FOLDER } from './builder';
|
|
|
2
2
|
export { V2Mp3Encoder } from './encoders/v2/v2Mp3Encoder';
|
|
3
3
|
export { Crate } from './model/crate';
|
|
4
4
|
export { Track } from './model/track';
|
|
5
|
+
export { TrackMeta } from './model/trackMeta';
|
|
5
6
|
export { HotCue } from './model/hotCue';
|
|
6
7
|
export { HotCueType } from './model/hotCueType';
|
package/src/model/track.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as path from 'path';
|
|
|
2
2
|
import { HotCue } from './hotCue';
|
|
3
3
|
import { HotCueType } from './hotCueType';
|
|
4
4
|
import { Tempo } from './tempo';
|
|
5
|
+
import { TrackMeta } from './trackMeta';
|
|
5
6
|
|
|
6
7
|
export class Track {
|
|
7
8
|
path: string;
|
|
@@ -15,6 +16,7 @@ export class Track {
|
|
|
15
16
|
beatgrid: Tempo[];
|
|
16
17
|
hotCues: HotCue[];
|
|
17
18
|
cueLoops: HotCue[];
|
|
19
|
+
trackMeta: TrackMeta | null;
|
|
18
20
|
|
|
19
21
|
constructor(
|
|
20
22
|
trackPath: string,
|
|
@@ -28,6 +30,7 @@ export class Track {
|
|
|
28
30
|
beatgrid?: Tempo[];
|
|
29
31
|
hotCues?: HotCue[];
|
|
30
32
|
cueLoops?: HotCue[];
|
|
33
|
+
trackMeta?: TrackMeta;
|
|
31
34
|
} = {}
|
|
32
35
|
) {
|
|
33
36
|
this.path = trackPath;
|
|
@@ -41,6 +44,7 @@ export class Track {
|
|
|
41
44
|
this.beatgrid = params.beatgrid ?? [];
|
|
42
45
|
this.hotCues = params.hotCues ?? [];
|
|
43
46
|
this.cueLoops = params.cueLoops ?? [];
|
|
47
|
+
this.trackMeta = params.trackMeta ?? null;
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
static fromPath(trackPath: string, userRoot?: string): Track {
|
|
@@ -70,4 +74,8 @@ export class Track {
|
|
|
70
74
|
this.hotCues.splice(atIndex, 0, hotCue);
|
|
71
75
|
}
|
|
72
76
|
}
|
|
77
|
+
|
|
78
|
+
addTrackMeta(trackMeta: TrackMeta): void {
|
|
79
|
+
this.trackMeta = trackMeta;
|
|
80
|
+
}
|
|
73
81
|
}
|