djtools

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 26, 2025 License: MIT

README

djtools

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.

Features

Conversion

djtools converts your:

  • Tracks
  • Playlists and crates
  • Cue points
  • Hot cues
  • Loops
  • Beat grids

Smart playlist conversion and MP3 offset correction is planned.

Platforms

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
Utilities

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

Usage

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)
  }
}

Directories

Path Synopsis
This package contains import and export functions for Engine's database format.
This package contains import and export functions for Engine's database format.
This package contains shared datatypes and functions.
This package contains shared datatypes and functions.
This package contains import and export functions for Rekordbox's XML format.
This package contains import and export functions for Rekordbox's XML format.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL