Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const restler = require('restler');
- const fs = require('fs');
- const readDir = require('readdir');
- const powerOff = require('power-off');
- const options = {
- folder: 'files',
- completefolder: 'complete',
- accesstoken: 'xxxxxxxxx'
- }
- // shut down computer
- const shutDown = () => {powerOff((err, stderr, stdout) => {
- if(!err && !stderr) {
- console.log(stdout);
- }
- })
- };
- // uploadFile uploads file with restler to mixcloud, if api returns rate limiting object, try again in x seconds
- const uploadFile = (folder, filename) => {
- const filepath = `./${folder}/${filename}`
- fs.stat(`./${folder}/${filename}`, function(err, stats) {
- const size = stats.size;
- restler.post(`https://api.mixcloud.com/upload/?access_token=${options.accesstoken}`, {
- multipart: true,
- data: {
- "mp3": restler.file(`./${folder}/${filename}`, null, size, null, 'audio/mpeg'),
- "name": filename,
- // "unlisted": true
- // more data can be added here depending on changes in workflow, automate images etc
- }
- }).on("complete", function(data) {
- const returned = JSON.parse(data);
- if (returned.error) {
- if (returned.error.type == "RateLimitException") {
- // try again in x seconds
- console.log(`uploading too fast, retrying upload of ${filename}after ${returned.error.retry_after} seconds`);
- setTimeout(() => uploadFile(folder, filename), returned.error.retry_after*1000);
- }
- else {
- console.log('non-rate-limiting error');
- console.log(returned);
- }
- }
- else {
- console.log('Success!');
- console.log(returned);
- // move uploaded files into completed folder
- fs.rename(`./${folder}/${filename}`, `./${options.completefolder}/${filename}`, (err) => {
- if (err) {
- console.log(err)
- }
- else {
- counter += 1;
- console.log(counter);
- if (counter === files.length) {
- console.log('done');
- shutDown();
- }
- }
- })
- }
- });
- });
- };
- // get all mp3s and upload all of them
- const files = readDir.readSync(`./${options.folder}`, ['**.mp3'] );
- let counter = 0;
- for (var i = 0; i < files.length; i++) {
- uploadFile(options.folder, files[i])
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement