-
Notifications
You must be signed in to change notification settings - Fork 0
/
player.js
67 lines (54 loc) · 1.32 KB
/
player.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
var child = require('child_process');
var logger = require('./logger');
var fs = require('fs');
var buckets = require('./buckets');
var playing = false;
module.exports.isPlaying = function()
{
return playing;
}
var play = async function(videoLoc)
{
try {
playing = true;
const vlc = child.spawn('vlc',['-f','--play-and-exit','tmp/'+videoLoc]);
return vlc;
} catch (e) {
logger.error("Issue playing: " + e);
}
}
module.exports.playSongs = async function()
{
logger.log("Loop started",HIGH);
while(!buckets.isEmpty())
{
var video = buckets.getNextVideo();
if(!video)
{
logger.log("Did not get a video from the buckets",HIGH);
return;
}
logger.log("Playing: " + video.title,LOW);
var vlc = await play(video.file);
var promise = new Promise((resolve,reject) => {
if(false){reject();}
vlc.on('exit', (code,signal)=> {
var fName = video.file;
deleteSong(fName);
resolve();
});
});
await promise;
logger.log(video.title + " ended",MEDIUM);
playing = false;
}
}
module.exports.play = play;
var deleteSong = function(file)
{
fs.unlink('tmp/'+file, (err) => {
if(err) {logger.error("Deletion issue: " + err);}
logger.log(file + " has been deleted.",MEDIUM);
});
}
module.exports.deleteSong = deleteSong;