HIRING a freelancer to write a simple JavaScript script using nodeJS to access the SoundCloud API

in #hiring5 years ago (edited)

SoundCloud Track Uploader/Deleter

I need a simple JavaScript script written using nodeJS. Apparently NPM can easily be accessed using the official soundcloud library.
https://developers.soundcloud.com/docs/api/guide

  1. I already have a developer app registered, with a client-id and client-secret readily available. These can be hardcoded into the script along with my account username (to_the_sun) and password.
  2. I then need a function written that accepts a path to an audio file (.wav and .mp3 compatible at least; if it's easy to add compatibility with other file types, please do) as an argument. The path will come to you with forward slashes (the Mac standard), so it may need to be converted to back slashes if that's what the API expects. The function should then:
  • Check the account to determine whether there is already a track with the same name as the file. If there is, delete it.
  • Check if the account currently has enough space to upload the file. If not, delete as many of the oldest tracks as necessary to make space.
  • Then upload the file. The track must be uploaded with the "downloadable" option enabled.

I actually have an old Ruby script that does roughly the same thing, which you can look at for reference if it's helpful. Just don't copy it exactly as it has issues, hence the need for this new one.

To explain a little more about my project and my needs: my application is written in Max/MSP which has native integration with JavaScript, in particular nodeJS via the Node for Max environment (https://cycling74.com/articles/node-for-max-intro-%E2%80%93-let%E2%80%99s-get-started). But it can be done any way that works, as long as

  • the authentication and login can be done automatically, so the user doesn't have to enter their credentials every time
  • the user doesn't have to manually install anything, like a specific JavaScript library. NPM packages can be installed programmatically with Node for Max, but if this requirement can be fulfilled in another way, that's fine too.