From 55adaf0b1ea81c4d196f1e9631d55e11552e097f Mon Sep 17 00:00:00 2001 From: Wong Liang Zan Date: Sat, 27 Aug 2011 17:32:20 +0800 Subject: [PATCH] integrated with normalize lib --- app.js | 149 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 80 insertions(+), 69 deletions(-) diff --git a/app.js b/app.js index 024b20c..a5df0d2 100644 --- a/app.js +++ b/app.js @@ -1,91 +1,102 @@ - -/** +/* * Module dependencies. */ - -var logger = require('nlogger').logger(module); -var fs = require('fs'); -var express = require('express') - , form = require('connect-form'); - +var logger = require('nlogger').logger(module), +sys = require('sys'), +path = require('path'), +fs = require('fs'), +exec = require('child_process').exec, +express = require('express'), +form = require('connect-form'), +normalizer = require('./lib/normalize').Normalizer; var app = module.exports = express.createServer( - form({ keepExtensions: true }) + form({ keepExtensions: true }) ); // Configuration - app.configure(function(){ - app.set('views', __dirname + '/views'); - app.set('view engine', 'jade'); - app.use(express.bodyParser()); - app.use(express.methodOverride()); - app.use(app.router); - app.use(express.static(__dirname + '/public')); -}); + app.set('views', __dirname + '/views'); + app.set('view engine', 'jade'); + app.use(express.bodyParser()); + app.use(express.methodOverride()); + app.use(app.router); + app.use(express.static(__dirname + '/public')); + }); app.configure('development', function(){ - app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); -}); + app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); + }); app.configure('production', function(){ - app.use(express.errorHandler()); -}); + app.use(express.errorHandler()); + }); // Routes - -var tempDir = '/tmp/'; //this is where the connect middleware is storing uploaded files -var audioDir = '/home/teamates/audio/'; // this is where we will permanently store uploaded files +var audioDir = __dirname + '/audio/'; var fileCounter = 'counter.json'; app.get('/', function(req, res){ - res.render('index', { - title: 'Tea-mates' - }); -}); - -app.post('/', function (req, res, next) { - req.form.complete(function(err, fields, files) { - if (err) { - next(err); - } else { - logger.debug('\nuploaded %s to %s' - , files.audio.filename - , files.audio.path); - - // should prob use async fs functions below with a callback - - // get the file extension - var split = files.audio.filename.split('.'); - var ext = split[split.length - 1]; - - if (ext == 'mp3') { - // get the file counter and increment it - var fileContents = fs.readFileSync(fileCounter,'utf8'); - var jsonCounter = JSON.parse(fileContents); - var counter = jsonCounter.counter; - counter++; - logger.debug(counter); - fs.writeFileSync(fileCounter, '{ "counter": ' + counter + ' }'); - - // move the file from the temp to permanent dir - fs.rename(files.audio.path - , audioDir + counter + '.' + ext); - res.redirect('back'); - } - else { - res.send(415); - } - - - } + res.render('index', { title: 'Tea-mates' }); }); - req.form.on('progress', function(bytesReceived, bytesExpected){ - var percent = (bytesReceived / bytesExpected * 100) | 0; - process.stdout.write('Uploading: %' + percent + '\r'); - }); -}); +app.post('/', function (req, res, next) { + req.form.complete(function(err, fields, files) { + if (err) { + next(err); + } else { + logger.debug('\nuploaded %s to %s' + , files.audio.filename + , files.audio.path); + + // should prob use async fs functions below with a callback + + // get the file extension + var split = files.audio.filename.split('.'); + var ext = split[split.length - 1]; + + if (ext == 'mp3') { + // get the file counter and increment it + var fileContents = fs.readFileSync(fileCounter,'utf8'); + var jsonCounter = JSON.parse(fileContents); + var counter = jsonCounter.counter; + counter++; + logger.debug(counter); + fs.writeFileSync(fileCounter, '{ "counter": ' + counter + ' }'); + + // move the file from the temp to permanent dir + var audioFileName = counter + '.' + ext; + var audioFilePath = audioDir + audioFileName; + var cmd = "mv " + files.audio.path + " " + audioFilePath; + var child = exec(cmd, function(err, stdout, stderr) { + if (err) { + sys.puts(JSON.stringify(err)); + } else { + normalizer.normalizeFile(audioFilePath, function(err, text) { + if (err) { + sys.puts(JSON.stringify(err)); + } else { + sys.puts(text); + fs.unlinkSync(__dirname + '/' + path.basename(audioFileName, '.mp3') + '.flac'); + } + }); + } + }); + res.redirect('back'); + } + else { + res.send(415); + } + + + } + }); + + req.form.on('progress', function(bytesReceived, bytesExpected){ + var percent = (bytesReceived / bytesExpected * 100) | 0; + process.stdout.write('Uploading: %' + percent + '\r'); + }); + }); app.listen(3000); console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);