Made the application work, can now lookup and play songs on a mumble server
This commit is contained in:
parent
f1fa1a913a
commit
649b45c084
75
app.js
75
app.js
|
@ -2,6 +2,11 @@
|
||||||
|
|
||||||
var lame = require('lame');
|
var lame = require('lame');
|
||||||
var mumble = require('mumble');
|
var mumble = require('mumble');
|
||||||
|
var yt = require('youtube-search');
|
||||||
|
var dl = require('youtube-dl');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
var lastresults = [];
|
||||||
|
|
||||||
mumble.connect('mumble://wallpiece:9648', function(error, client) {
|
mumble.connect('mumble://wallpiece:9648', function(error, client) {
|
||||||
if(error) { throw new Error(error); }
|
if(error) { throw new Error(error); }
|
||||||
|
@ -16,15 +21,67 @@ var start = function( client ) {
|
||||||
var input = client.inputStream();
|
var input = client.inputStream();
|
||||||
var decoder = new lame.Decoder();
|
var decoder = new lame.Decoder();
|
||||||
|
|
||||||
client.channelByName('Gaming').join()
|
|
||||||
|
|
||||||
client.on('textMessage', function (data) {
|
client.on('textMessage', function (data) {
|
||||||
// console.log(client.userBySession(data.session[0]));
|
var command = data.message.split(' ');
|
||||||
if (data.message == 'play') {
|
|
||||||
|
if (command[0] == '/join') {
|
||||||
|
client.channelById(client.userBySession(data.actor).channel.id).join();
|
||||||
|
}
|
||||||
|
else if (command[0] == '/select'){
|
||||||
|
if (command[1] && parseInt(command[1]) != NaN) {
|
||||||
|
if (lastresults.length > 0) {
|
||||||
|
command[1] = parseInt(command[1]);
|
||||||
|
dl.exec(lastresults[command[1]].link, ['-x', '--audio-format', 'mp3', '-o', 'music/%(title)s.%(ext)s'], {}, function(err, output) {
|
||||||
|
if (err) throw err;
|
||||||
|
play(client, lastresults[command[1]].title);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sendMessage(client, 'You didn\'t do a song lookup yet, try /play (<songname>). Or you didn\'t fill in a number.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sendMessage(client, 'You need to specify which song you want to play : (<songnumber>)')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (command[0] == '/play') {
|
||||||
|
if (command[1]) {
|
||||||
|
if (command[1].substr(0,6) == 'http://' || command[1].substr(0, 7) == 'https://') {
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (command[1] == 'offline') {
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
command.splice(0,1);
|
||||||
|
yt(command.join(' '), {key: fs.readFileSync('apikey').toString()}, function (err, results) {
|
||||||
|
lastresults = results;
|
||||||
|
if (err) console.warn(err);
|
||||||
|
var list = '<br><span style="color:green;">What song do you wanna play?</span><br>';
|
||||||
|
for (var i = 0; i < results.length; i++) {
|
||||||
|
list += '<span style="color:cyan;">[</span>' + i +'<span style="color:cyan;">]</span> ' + results[i].title + '<br>';
|
||||||
|
|
||||||
|
}
|
||||||
|
list += '<br><span style="color:green">Type what song you want with /select <span style="color:red"><number of the song></span></span>'
|
||||||
|
sendMessage(client, list);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sendMessage(client, 'You need to specify what you would want to play : (offline/<songname>/<youtubelink>)');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function sendMessage(client, message) {
|
||||||
|
client.sendMessage('TextMessage', {'message': message, channelId: [client.user.channel.id]})
|
||||||
|
}
|
||||||
|
|
||||||
|
function play(client, song) {
|
||||||
var stream;
|
var stream;
|
||||||
decoder.on( 'format', function(format) {
|
decoder.on( 'format', function(format) {
|
||||||
// console.log( format );
|
|
||||||
|
|
||||||
stream.pipe(client.inputStream({
|
stream.pipe(client.inputStream({
|
||||||
channels: format.channels,
|
channels: format.channels,
|
||||||
sampleRate: format.sampleRate,
|
sampleRate: format.sampleRate,
|
||||||
|
@ -32,11 +89,7 @@ var start = function( client ) {
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
stream = require('fs').createReadStream(__dirname + '/test.mp3').pipe( decoder );
|
stream = require('fs').createReadStream(__dirname + '/music/' + song + '.mp3').pipe(decoder);
|
||||||
}
|
}
|
||||||
client.channelByName('Gaming').join()
|
|
||||||
// if (data.)
|
|
||||||
// client.sendMessage('Received message');
|
|
||||||
});
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Reference in a new issue