UNPKG

@eidoriantan/seratolibraryparser

Version:

Helps parsing serato DJ libraries for node.js based applications.

72 lines (51 loc) 2.89 kB
# Simple Serato DJ / Scratch Library Parser This simple serato DJ Library Parser supports typescript and helps parsing serato history files. Serato history files are saved in a very simple format. They consist of a DOM-like structure, where every node begins with a four byte id, the four byte length and afterwards following the content of the node. The content is a array of nodes, a 4 byte integer or a unicode string. ## Usage Install it via ```console npm install seratolibraryparser ``` It offers several functions ```javascript import { getDefaultITunesLibraryPath, getDefaultSeratoPath, getITunesSongs, getSeratoHistory, getSeratoSongs } from "./index"; async function read() { // ES6 function to read in all history files of a user const path = getDefaultSeratoPath() // gets default serato path const databaseSongs = await getSeratoSongs(path + 'database V2') // Gets array of songs console.log(databaseSongs) // Displays whole data tree parsed out of serato files const wholeHistory = await getSeratoHistory(path) // Reads in all songs ever played console.log(wholeHistory) // Prints them const iTunesLibraray = await getITunesSongs(getDefaultITunesLibraryPath()) // Reads in all songs ever played console.log(iTunesLibraray) // Prints them } read() ``` ## Documentation [https://tobiasjacob.github.io/seratolibraryparser/index.html](https://tobiasjacob.github.io/seratolibraryparser/index.html) ## Development Feel free to contribute to this package. Clone this repository, run `npm install` and `npm run demo` to get started. Don't forget to adjust the `path` variable. ## Dom structure of serato files `history.database` is the main file of serato history data - `vrsn` (8 + 60): String containing the version - `ocol` (8 + 24): - `ocok` (8 + 2): Maybe something with sorting? - `ucow` (8 + 2): Maybe col width? - `oses` (8 + ?): - `adat` (8 + ?): - `\u0000\u0000\u0000\u0001` (8 + 4): id of the associated session file - `\u0000\u0000\u0000)` (8 + 18): date of playlist as string - `\u0000\u0000\u00009` (8 + ?): hardware used as string - ... `Sessions/*.session` stores session data of songs played after each other - `vrsn` (8 + 60): String containing the version - `oent` (8 + ?): - `adat` (8 + ?): - `\u0000\u0000\u0000\u0006` (8 + ?): Title field of mp3 - `\u0000\u0000\u0000\u0007` (8 + ?): Artist field of mp3 - `\u0000\u0000\u0000\t` (8 + ?): Genre field of mp3 - `\u0000\u0000\u0000\u0017` (8 + ?): Year field of mp3 - `\u0000\u0000\u0000\u0003` (8 + ?): Key - `\u0000\u0000\u0000\b` (8 + ?): Album - `\u0000\u0000\u0000\u0002` (8 + ?): File Path - `\u0000\u0000\u00005` (8 + 4): Timestamp when the song was played (seconds since 1970, UInt32) - `\u0000\u0000\u0000-`(8 + 4): The duration of the time where the song was playing (in seconds, UInt32) - ...