djtools
is a library written in Go to manipulate and convert your DJ software libraries. It aims to be simple and fast, it depends on few third-party packages, and it's complete with a robust testing framework. Right now, the tool is only a Go library, but a CLI is planned for standalone use or to ship with other projects.
djtools
converts your:
- Tracks
- Playlists and crates
- Cue points
- Hot cues
- Loops
- Beat grids
Smart playlist conversion and MP3 offset correction is planned.
Currently, djtools
supports these platforms:
- Engine: import
- Rekordbox XML: import and export
djtools
plans to support these platforms:
- Engine: export
- Rekordbox: import and export
- Algoriddim Djay: import and export
- Serato: import and export
- VirtualDJ: import and export
- Mixxx: import and export
- Spotify: playlist export
- Soundcloud: playlist export
- Beatport: playlist export
djtools
plans to support these utilities:
- Purchase link finder: import a
djtools
library, a streaming service playlist, or a song name and get a list of links to buy the song(s) with their respective prices
Below illustrates basic usage of djtools
. The example code imports an Engine library, removes the first playlist from the library, and exports the library to a Rekordbox XML file.
package main
import (
"log"
"github.com/nateranda/djtools/engine"
"github.com/nateranda/djtools/rbxml"
)
func main() {
// initialize an empty options struct
importOptions := engine.ImportOptions{}
// import your Engine library
library, err := engine.Import("import/path/", importOptions)
if err != nil {
log.Panic(err)
}
// modify your library however you want,
// like removing the first playlist
library.Playlists = library.Playlists[1:]
// export to a Rekordbox XML file
err = rbxml.Export(&library, "export/path/library.xml")
if err != nil {
log.Panic(err)
}
}