/** * File: app/radio.js * Author: Gerrit Linnemann * * Where the magic happens. */ // load the things we need var exec = require('child_process').exec; var App = null; var Log = null var Helper = null; var Conf = null; exports.init = function(Express, Configuration) { App = Express; Conf = Configuration; Log = App.get('Log'); Helper = App.get('Helper'); Log.debug('Radio: ' + exports.countChannels() + ' channels configured'); Helper.each(Conf.channels, function(channel, isLast) { //Log.inspect('Channel', channel); Log.log('Radio: Found channel ' + channel.title); }); return this; } exports.countChannels = function() { return Conf.channels.length; } exports.getChannels = function() { return Conf.channels; } exports.getChannel = function(idx) { if(Helper.isDefinedAndNotNull(Conf.channels[idx])) { return Conf.channels[idx]; } else { return null; } } exports.play = function(idx) { var channel = Conf.channels[idx]; if(channel !== undefined) { var stream2play = channel.stream; try { var parsers = require("playlist-parser"); var M3U = parsers.M3U; var fs = require("fs"); var playlist = M3U.parse(fs.readFileSync('/Users/gerrit/Downloads/swr3_m.m3u', { encoding: "utf8" })); Log.inspect('Radio: playlist', playlist); if(Helper.isDefinedAndNotNull(playlist[0])) { stream2play = playlist[0].file; } } catch(e) { Log.error(e); } var ls = exec( 'mplayer -slave -quiet ' + stream2play, function (error, stdout, stderr) { Log.log('Radio: stdout: ' + stdout); Log.log('Radio: stderr: ' + stderr); if (error !== null) { Log.error('Radio: exec error: ' + error); } } ); setTimeout(function() { exec('echo "pause"', function(error, stdout, stderr) {}); }, 4000); ls.on('exit', function (code){ Log.log('Radio: Child process exited with exit code ' + code); }); } else { Log.error('Radio: No channel defined!'); } }