Manage Serato Crates Programatically in NodeJS.
npm install seratojs
const seratojs = require("seratojs");
// List all crates defined by user.
const crates = seratojs.listCratesSync();
console.log(crates);
// List all song filepaths in a given crate.
const crate = crates[0];
const songs = crate.getSongPathsSync();
console.log(songs);
// Create a crate
const newCrate = new seratojs.Crate("ProgramaticallyCreatedCrate");
newCrate.addSong("Users/bcollazo/Music/song.mp3");
newCrate.addSong("C:\\Users\\bcollazo\\Music\\second_song.mp3");
newCrate.saveSync();
Asynchronous (await-async / promise-based) API:
const seratojs = require("seratojs");
(async function () {
const crates = await seratojs.listCrates();
const songs = await crates[0].getSongPaths();
const newCrate = new seratojs.Crate("ProgramaticallyCreatedCrate");
newCrate.addSong("Users/bcollazo/Music/song.mp3");
await newCrate.save();
})();
Adding songs from different drives will replicate Serato's behavior of saving the crate in all drives participating in the crate.
const crate = new seratojs.Crate("MyCrate");
crate.addSong("D:\\Music\\song1.mp3");
crate.addSong("C:\\Users\\bcollazo\\Music\\song2.mp3");
crate.saveSync(); // will save in D:\\_Serato_ and C:\\Users\\bcollazo\\Music\\_Serato_
SeratoJS tries to sanitize crate name before creation. This is to allow crates named 'Some / Name' to be created without giving trouble. It will be created as 'Some - Name' instead.
- Change
crate.getSongPaths()
tocrate.getSongPathsSync()
orawait crate.getSongPaths()
. - Change
newCrate.save()
tonewCrate.saveSync()
orawait newCrate.save()
.