Beatport API client for Node.js
JavaScript
Permalink
Failed to load latest commit information.
node_modules/superagent
LICENCE First commit Jun 6, 2011
README.md Improvements, fixes and new examples Jun 9, 2011
beatport.js
example.js
package.json Improvements, fixes and new examples Jun 9, 2011
test.js First commit Jun 6, 2011

README.md

node-beatport

Beatport API client - resources as methods, also attempts to improve the resulting data to make them more useful.

Installation

npm install beatport

Usage / Examples

var Beatport = require('beatport')

// initialize and configure client
var bp = Beatport({ perPage: 10, sortBy: 'releaseDate desc' })

// resources (i.e: featured/releases) as methods (camelCased, i.e: featuredReleases)
//
// a search for tracks by 'digweed'
bp.search({ query: 'digweed', facets: { fieldType: [ 'track' ] } }, function(err, results, metadata) {
  results.forEach(function(track) {
    console.log(track.title)
  })
})

// get tracks of genre Tech House and performers John Digweed and Nick Muir
bp.tracks({
  facets: {
    genreName: 'Tech House'
  , performerName: [ 'John Digweed', 'Nick Muir' ]
  }
, page: 1
}, function(err, results, metadata) {
  results.forEach(function(track) {
    console.log(track.title)
  })
})

// get details of label with id 804
bp.labelsDetail({ id: 804 }, function(err, results, metadata) {
  results.mostPopularReleases.forEach(function(release) {
    console.log(release.name, release.artists.names)
  })
})

Improving the Beatport data

In order to make the resulting Beatport data more Javascript-friendly, by default the client attempts to improve the data. If you don't want this behavior, just initialize the client with an improve: false option.

This is what it does, so far:

  • Adds a .camelot field containing the Camelot system representation of the track key (ie '8B')
  • Finds remixers in the .artists field and extracts them to their own array .remixers
  • Parses the ids and names of artists and remixers and creates arrays as properties in the Object type of the existing arrays: .artists.names, .artists.ids, .remixers.names, .remixers.ids
  • Converts date strings to Date objects
  • Adds .title field to the tracks, with a proper representation of the track, like this: Artist Name - Track Name (MixName)