90 lines
1.8 KiB
JavaScript
90 lines
1.8 KiB
JavaScript
/**
|
|
* File: app/radio.js
|
|
* Author: Gerrit Linnemann
|
|
*
|
|
* Where the magic happens.
|
|
*/
|
|
|
|
|
|
// load the things we need
|
|
var spawn = require('child_process').spawn;
|
|
|
|
|
|
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(channel.stream, { encoding: "utf8" }));
|
|
Log.inspect('Radio: playlist', playlist);
|
|
|
|
if(Helper.isDefinedAndNotNull(playlist[0])) {
|
|
stream2play = playlist[0].file;
|
|
}
|
|
} catch(e) {
|
|
Log.error(e);
|
|
}*/
|
|
|
|
|
|
var child = spawn(
|
|
'mplayer',
|
|
[
|
|
'-slave',
|
|
'-quit',
|
|
'stream2play'
|
|
]
|
|
);
|
|
|
|
child.stdout.on('data', function(chunk) {
|
|
Log.log('Radio: ' + chunk);
|
|
});
|
|
|
|
child.on('exit', function (code){
|
|
Log.log('Radio: Child process exited with exit code ' + code);
|
|
});
|
|
} else {
|
|
Log.error('Radio: No channel defined!');
|
|
}
|
|
} |