mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 18:00:23 +00:00
Better handling of errors in videos, only removing if an error is found, else a regular skip is performed
This commit is contained in:
@@ -5,6 +5,7 @@ var Frontpage = require(pathThumbnails + '/handlers/frontpage.js');
|
||||
var projects = require(pathThumbnails + "/handlers/aggregates.js");
|
||||
var crypto = require('crypto');
|
||||
var Filter = require('bad-words');
|
||||
var Search = require(pathThumbnails + '/handlers/search.js');
|
||||
var filter = new Filter({ placeHolder: 'x'});
|
||||
/*var filter = {
|
||||
clean: function(str) {
|
||||
@@ -187,80 +188,82 @@ function skip(list, guid, coll, offline, socket, callback) {
|
||||
if(docs.length > 0 && (docs[0].userpass == undefined || docs[0].userpass == "" || (list.hasOwnProperty('userpass') && docs[0].userpass == list.userpass))) {
|
||||
Functions.check_inlist(coll, guid, socket, offline, undefined, "place 12");
|
||||
|
||||
var video_id;
|
||||
adminpass = "";
|
||||
video_id = list.id;
|
||||
err = list.error;
|
||||
var error = false;
|
||||
var video_id;
|
||||
if(err != "5" && err != "100" && err != "101" && err != "150")
|
||||
{
|
||||
adminpass = list.pass;
|
||||
}else if(err == "5" || err == "100" || err == "101" || err == "150"){
|
||||
error = true;
|
||||
}
|
||||
hash = adminpass;
|
||||
//db.collection(coll + "_settings").find(function(err, docs){
|
||||
var strictSkip = false;
|
||||
var strictSkipNumber = 10;
|
||||
if(docs[0].strictSkip) strictSkip = docs[0].strictSkip;
|
||||
if(docs[0].strictSkipNumber) strictSkipNumber = docs[0].strictSkipNumber;
|
||||
if(docs !== null && docs.length !== 0)
|
||||
{
|
||||
|
||||
if(!docs[0].skip || (docs[0].adminpass == hash && docs[0].adminpass !== "") || error)
|
||||
Search.check_if_error_or_blocked(video_id, coll, err == "5" || err == "100" || err == "101" || err == "150", function(trueError) {
|
||||
var error = false;
|
||||
if(!trueError)
|
||||
{
|
||||
adminpass = list.pass;
|
||||
}else if(trueError){
|
||||
error = true;
|
||||
}
|
||||
hash = adminpass;
|
||||
//db.collection(coll + "_settings").find(function(err, docs){
|
||||
var strictSkip = false;
|
||||
var strictSkipNumber = 10;
|
||||
if(docs[0].strictSkip) strictSkip = docs[0].strictSkip;
|
||||
if(docs[0].strictSkipNumber) strictSkipNumber = docs[0].strictSkipNumber;
|
||||
if(docs !== null && docs.length !== 0)
|
||||
{
|
||||
|
||||
db.collection("frontpage_lists").find({"_id": coll}, function(err, frontpage_viewers){
|
||||
if(
|
||||
(strictSkip && (error || (docs[0].adminpass == hash && docs[0].adminpass !== "") || (docs[0].skips.length+1 >= strictSkipNumber))) ||
|
||||
(!strictSkip && ((frontpage_viewers[0].viewers/2 <= docs[0].skips.length+1 && !Functions.contains(docs[0].skips, guid) && frontpage_viewers[0].viewers != 2) ||
|
||||
(frontpage_viewers[0].viewers == 2 && docs[0].skips.length+1 == 2 && !Functions.contains(docs[0].skips, guid)) ||
|
||||
(docs[0].adminpass == hash && docs[0].adminpass !== "" && docs[0].skip))))
|
||||
{
|
||||
Functions.checkTimeout("skip", 1, coll, coll, error, true, socket, function() {
|
||||
change_song(coll, error, video_id, docs);
|
||||
socket.emit("toast", "skip");
|
||||
db.collection("user_names").find({"guid": guid}, function(err, docs) {
|
||||
if(docs.length == 1) {
|
||||
db.collection("registered_users").find({"_id": docs[0].name}, function(err, n) {
|
||||
var icon = false;
|
||||
if(n.length > 0 && n[0].icon) {
|
||||
icon = n[0].icon;
|
||||
}
|
||||
io.to(coll).emit('chat', {from: docs[0].name, icon: icon, msg: " skipped"});
|
||||
});
|
||||
if(!docs[0].skip || (docs[0].adminpass == hash && docs[0].adminpass !== "") || error)
|
||||
{
|
||||
|
||||
db.collection("frontpage_lists").find({"_id": coll}, function(err, frontpage_viewers){
|
||||
if(
|
||||
(strictSkip && (error || (docs[0].adminpass == hash && docs[0].adminpass !== "") || (docs[0].skips.length+1 >= strictSkipNumber))) ||
|
||||
(!strictSkip && ((frontpage_viewers[0].viewers/2 <= docs[0].skips.length+1 && !Functions.contains(docs[0].skips, guid) && frontpage_viewers[0].viewers != 2) ||
|
||||
(frontpage_viewers[0].viewers == 2 && docs[0].skips.length+1 == 2 && !Functions.contains(docs[0].skips, guid)) ||
|
||||
(docs[0].adminpass == hash && docs[0].adminpass !== "" && docs[0].skip))))
|
||||
{
|
||||
Functions.checkTimeout("skip", 1, coll, coll, error, true, socket, function() {
|
||||
change_song(coll, error, video_id, docs);
|
||||
socket.emit("toast", "skip");
|
||||
db.collection("user_names").find({"guid": guid}, function(err, docs) {
|
||||
if(docs.length == 1) {
|
||||
db.collection("registered_users").find({"_id": docs[0].name}, function(err, n) {
|
||||
var icon = false;
|
||||
if(n.length > 0 && n[0].icon) {
|
||||
icon = n[0].icon;
|
||||
}
|
||||
io.to(coll).emit('chat', {from: docs[0].name, icon: icon, msg: " skipped"});
|
||||
});
|
||||
}
|
||||
});
|
||||
}, "The channel is skipping too often, please wait ");
|
||||
} else if(!Functions.contains(docs[0].skips, guid)){
|
||||
db.collection(coll + "_settings").update({ id: "config" }, {$push:{skips:guid}}, function(err, d){
|
||||
if(frontpage_viewers[0].viewers == 2 && !strictSkip) {
|
||||
to_skip = 1;
|
||||
} else if(strictSkip) {
|
||||
to_skip = (strictSkipNumber) - docs[0].skips.length-1;
|
||||
} else {
|
||||
to_skip = (Math.ceil(frontpage_viewers[0].viewers/2) - docs[0].skips.length-1);
|
||||
}
|
||||
socket.emit("toast", to_skip + " more are needed to skip!");
|
||||
db.collection("user_names").find({"guid": guid}, function(err, docs) {
|
||||
if(docs.length == 1) {
|
||||
db.collection("registered_users").find({"_id": docs[0].name}, function(err, n) {
|
||||
var icon = false;
|
||||
if(n.length > 0 && n[0].icon) {
|
||||
icon = n[0].icon;
|
||||
}
|
||||
socket.to(coll).emit('chat', {from: docs[0].name, msg: " voted to skip"});
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
}, "The channel is skipping too often, please wait ");
|
||||
} else if(!Functions.contains(docs[0].skips, guid)){
|
||||
db.collection(coll + "_settings").update({ id: "config" }, {$push:{skips:guid}}, function(err, d){
|
||||
if(frontpage_viewers[0].viewers == 2 && !strictSkip) {
|
||||
to_skip = 1;
|
||||
} else if(strictSkip) {
|
||||
to_skip = (strictSkipNumber) - docs[0].skips.length-1;
|
||||
} else {
|
||||
to_skip = (Math.ceil(frontpage_viewers[0].viewers/2) - docs[0].skips.length-1);
|
||||
}
|
||||
socket.emit("toast", to_skip + " more are needed to skip!");
|
||||
db.collection("user_names").find({"guid": guid}, function(err, docs) {
|
||||
if(docs.length == 1) {
|
||||
db.collection("registered_users").find({"_id": docs[0].name}, function(err, n) {
|
||||
var icon = false;
|
||||
if(n.length > 0 && n[0].icon) {
|
||||
icon = n[0].icon;
|
||||
}
|
||||
socket.to(coll).emit('chat', {from: docs[0].name, msg: " voted to skip"});
|
||||
})
|
||||
}
|
||||
});
|
||||
});
|
||||
}else{
|
||||
socket.emit("toast", "alreadyskip");
|
||||
}
|
||||
});
|
||||
}else
|
||||
socket.emit("toast", "noskip");
|
||||
}
|
||||
}else{
|
||||
socket.emit("toast", "alreadyskip");
|
||||
}
|
||||
});
|
||||
}else
|
||||
socket.emit("toast", "noskip");
|
||||
}
|
||||
});
|
||||
//});
|
||||
} else {
|
||||
socket.emit("auth_required");
|
||||
@@ -307,44 +310,23 @@ function change_song(coll, error, id, conf, callback, socket) {
|
||||
console.log("empty list", coll, callback, id, conf);
|
||||
}
|
||||
if(now_playing_doc.length > 0 && ((id && id == now_playing_doc[0].id) || !id)) {
|
||||
if(error && now_playing_doc[0].source == "youtube"){
|
||||
request('http://img.youtube.com/vi/'+now_playing_doc[0].id+'/mqdefault.jpg', function (err, response, body) {
|
||||
if (err || response.statusCode == 404) {
|
||||
db.collection(coll).remove({now_playing:true, id:id}, function(err, docs){
|
||||
var next_song;
|
||||
if(now_playing_doc.length == 2) next_song = now_playing_doc[1].id;
|
||||
change_song_post(coll, next_song, conf, callback, socket);
|
||||
if(!callback) {
|
||||
io.to(coll).emit("channel", {type: "deleted", value: now_playing_doc[0].id, removed: true});
|
||||
}
|
||||
if(docs.deletedCount == 1) {
|
||||
db.collection("frontpage_lists").update({_id: coll, count: {$gt: 0}}, {$inc: {count: -1}, $set:{accessed: Functions.get_time()}}, {upsert: true}, function(err, docs){});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if((conf[0].skipped_time != undefined && conf[0].skipped_time != Functions.get_time()) ||conf[0].skipped_time == undefined) {
|
||||
db.collection(coll + "_settings").update({id: "config"}, {$set: {skipped_time: Functions.get_time()}}, function(err, updated){
|
||||
db.collection(coll).update({now_playing:true, id:id}, {
|
||||
$set:{
|
||||
now_playing:false,
|
||||
votes:0,
|
||||
guids:[]
|
||||
}
|
||||
},{multi:true}, function(err, docs){
|
||||
var next_song;
|
||||
if(now_playing_doc.length == 2) next_song = now_playing_doc[1].id;
|
||||
if(docs.n >= 1) change_song_post(coll, next_song, conf, callback, socket);
|
||||
});
|
||||
});
|
||||
if(error){
|
||||
db.collection(coll).remove({now_playing:true, id:id}, function(err, docs){
|
||||
var next_song;
|
||||
if(now_playing_doc.length == 2) next_song = now_playing_doc[1].id;
|
||||
change_song_post(coll, next_song, conf, callback, socket, error);
|
||||
if(!callback) {
|
||||
io.to(coll).emit("channel", {type: "deleted", value: now_playing_doc[0].id, removed: true});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(docs.deletedCount == 1) {
|
||||
db.collection("frontpage_lists").update({_id: coll, count: {$gt: 0}}, {$inc: {count: -1}, $set:{accessed: Functions.get_time()}}, {upsert: true}, function(err, docs){});
|
||||
}
|
||||
});
|
||||
} else if(conf[0].removeplay === true){
|
||||
db.collection(coll).remove({now_playing:true, id:id}, function(err, docs){
|
||||
var next_song;
|
||||
if(now_playing_doc.length == 2) next_song = now_playing_doc[1].id;
|
||||
change_song_post(coll, next_song, conf, callback, socket);
|
||||
change_song_post(coll, next_song, conf, callback, socket, error);
|
||||
if(!callback) {
|
||||
io.to(coll).emit("channel", {type: "deleted", value: now_playing_doc[0].id, removed: true});
|
||||
}
|
||||
@@ -353,7 +335,6 @@ function change_song(coll, error, id, conf, callback, socket) {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
||||
if((conf[0].skipped_time != undefined && conf[0].skipped_time != Functions.get_time()) ||conf[0].skipped_time == undefined) {
|
||||
db.collection(coll).update({now_playing:true, id:id}, {
|
||||
$set:{
|
||||
@@ -364,14 +345,14 @@ function change_song(coll, error, id, conf, callback, socket) {
|
||||
},{multi:true}, function(err, docs){
|
||||
var next_song;
|
||||
if(now_playing_doc.length == 2) next_song = now_playing_doc[1].id;
|
||||
change_song_post(coll, next_song, conf, callback, socket);
|
||||
change_song_post(coll, next_song, conf, callback, socket, error);
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(now_playing_doc.length > 0 && now_playing_doc[0].now_playing == true && now_playing_doc.length > 1 && now_playing_doc[1].id == id) {
|
||||
db.collection(coll).update({id: now_playing_doc[0].id}, {$set: {now_playing: false}}, function(e, d) {
|
||||
change_song(coll, error, id, conf, callback, socket);
|
||||
change_song(coll, error, id, conf, callback, socket, error);
|
||||
})
|
||||
} else {
|
||||
return;
|
||||
@@ -382,7 +363,7 @@ function change_song(coll, error, id, conf, callback, socket) {
|
||||
//});
|
||||
}
|
||||
|
||||
function change_song_post(coll, next_song, conf, callback, socket) {
|
||||
function change_song_post(coll, next_song, conf, callback, socket, removed) {
|
||||
//coll = coll.replace(/ /g,'');
|
||||
db.collection(coll).aggregate([{
|
||||
$match:{
|
||||
@@ -425,13 +406,13 @@ function change_song_post(coll, next_song, conf, callback, socket) {
|
||||
}, function(err, returnDocs){
|
||||
//db.collection(coll + "_settings").find({id: "config"}, function(err, conf){
|
||||
if(!callback) {
|
||||
io.to(coll).emit("channel", {type: "song_change", time: Functions.get_time(), remove: conf[0].removeplay});
|
||||
io.to(coll).emit("channel", {type: "song_change", time: Functions.get_time(), remove: conf[0].removeplay || removed});
|
||||
send_play(coll);
|
||||
} else {
|
||||
if(socket == undefined) {
|
||||
io.to(coll).emit("channel", {type: "song_change", time: Functions.get_time(), remove: conf[0].removeplay});
|
||||
io.to(coll).emit("channel", {type: "song_change", time: Functions.get_time(), remove: conf[0].removeplay || removed});
|
||||
} else {
|
||||
socket.to(coll).emit("channel", {type: "song_change", time: Functions.get_time(), remove: conf[0].removeplay});
|
||||
socket.to(coll).emit("channel", {type: "song_change", time: Functions.get_time(), remove: conf[0].removeplay || removed});
|
||||
}
|
||||
send_play(coll, socket, true);
|
||||
callback();
|
||||
|
||||
Reference in New Issue
Block a user