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.
@@ -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;IAuChC,OAAO,CAAE,iBAAiB;IA+B1B,OAAO,CAAC,UAAU;IAwDlB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAE,MAA8B,EAAE,SAAS,UAAQ,GAAG,IAAI;CAOrF"}
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;AAiC7C,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,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"}
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
@@ -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"}
@@ -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;AAEhC,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;gBAGjB,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;KAChB;IAeR,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;CAehC"}
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"}
@@ -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,7 @@
1
+ export interface TrackMeta {
2
+ title?: string;
3
+ artist?: string;
4
+ album?: string;
5
+ fileExtension?: string;
6
+ }
7
+ //# sourceMappingURL=trackMeta.d.ts.map
@@ -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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tserato",
3
- "version": "0.1.10",
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
@@ -73,7 +73,6 @@ export class Builder {
73
73
 
74
74
  const tracks: Track[] = [];
75
75
  for (const p of this._parseCrateTracks(filepath)) {
76
- console.log('make track from path ', p, 'from file path ', filepath)
77
76
  tracks.push(Track.fromPath(p));
78
77
  }
79
78
 
@@ -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';
@@ -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
  }
@@ -0,0 +1,6 @@
1
+ export interface TrackMeta {
2
+ title?: string
3
+ artist?: string
4
+ album?: string
5
+ fileExtension?: string
6
+ }