diff --git a/server/handlers/list_change.js b/server/handlers/list_change.js index 446d442e..00ac1194 100644 --- a/server/handlers/list_change.js +++ b/server/handlers/list_change.js @@ -89,11 +89,11 @@ function add_function(arr, coll, guid, offline, socket) { db.collection(coll).update({views:{$exists:true}}, {$set:{startTime: Functions.get_time()}}); List.send_play(coll, undefined); Frontpage.update_frontpage(coll, id, title); - Search.get_correct_info(new_song, coll, false); + if(!full_list) Search.get_correct_info(new_song, coll, false); } else { var new_song = {"_id": "asd", "added":added,"guids":guids,"id":id,"now_playing":np,"title":title,"votes":votes, "duration":duration}; io.to(coll).emit("channel", {type: "added", value: new_song}); - Search.get_correct_info(new_song, coll, true); + if(!full_list) Search.get_correct_info(new_song, coll, true); } db.collection("frontpage_lists").update({_id:coll}, {$inc:{count:1}, $set:{accessed: Functions.get_time()}}, {upsert:true}, function(err, docs){}); List.getNextSong(coll); diff --git a/server/handlers/search.js b/server/handlers/search.js index 38b6991b..96a41a6c 100644 --- a/server/handlers/search.js +++ b/server/handlers/search.js @@ -8,35 +8,38 @@ function get_correct_info(song_generated, channel, broadcast) { url: "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+key+"&id=" + song_generated.id, }, function(error, response, body) { - var resp = JSON.parse(body); - if(resp.items.length == 1) { - var duration = parseInt(durationToSeconds(resp.items[0].contentDetails.duration)); - var title = resp.items[0].snippet.localized.title; - if(title != song_generated.title || duration < parseInt(song_generated.duration)) { - if(title != song_generated.title) { - song_generated.title = title; - } - if(duration < parseInt(song_generated.duration)) { - song_generated.duration = duration; - song_generated.start = 0; - song_generated.end = duration; - } - db.collection(channel).update({"id": song_generated.id}, { - $set: { - "duration": song_generated.duration, - "start": song_generated.start, - "end": song_generated.end, - "title": song_generated.title, + try { + var resp = JSON.parse(body); + if(resp.items.length == 1) { + var duration = parseInt(durationToSeconds(resp.items[0].contentDetails.duration)); + var title = resp.items[0].snippet.localized.title; + if(title != song_generated.title || duration < parseInt(song_generated.duration)) { + if(title != song_generated.title) { + song_generated.title = title; } - }, function(err, docs) { - if(broadcast && docs.nModified == 1) { - song_generated.new_id = song_generated.id; - io.to(channel).emit("channel", {type: "changed_values", value: song_generated}); + if(duration < parseInt(song_generated.duration)) { + song_generated.duration = duration; + song_generated.start = 0; + song_generated.end = duration; } - }); + db.collection(channel).update({"id": song_generated.id}, { + $set: { + "duration": song_generated.duration, + "start": song_generated.start, + "end": song_generated.end, + "title": song_generated.title, + } + }, function(err, docs) { + if(broadcast && docs.nModified == 1) { + song_generated.new_id = song_generated.id; + io.to(channel).emit("channel", {type: "changed_values", value: song_generated}); + } + }); + } } + catch(e){ + console.log(e); } - }); } @@ -51,53 +54,57 @@ function check_error_video(msg, channel) { url: "https://www.googleapis.com/youtube/v3/videos?part=id&key="+key+"&id=" + msg.id, }, function(error, response, body) { - var resp = JSON.parse(body); - if(resp.pageInfo.totalResults == 0) { - var yt_url = "https://www.googleapis.com/youtube/v3/search?key="+key+"&videoEmbeddable=true&part=id&type=video&order=viewCount&safeSearch=none&maxResults=5&q=" + encodeURIComponent(msg.title); - request({ - method: "GET", - url: yt_url, - }, function(error, response, body){ - var resp = JSON.parse(body); - if(resp.items.length > 0) { - var vid_url = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+key+"&id="; - for(var i = 0; i < resp.items.length; i++) { - vid_url += resp.items[i].id.videoId + ","; - } - request({ - type: "GET", - url: vid_url - }, function(error, response, body) { - var resp = JSON.parse(body); - var found = false; - var element = {}; + try { + var resp = JSON.parse(body); + if(resp.pageInfo.totalResults == 0) { + var yt_url = "https://www.googleapis.com/youtube/v3/search?key="+key+"&videoEmbeddable=true&part=id&type=video&order=viewCount&safeSearch=none&maxResults=5&q=" + encodeURIComponent(msg.title); + request({ + method: "GET", + url: yt_url, + }, function(error, response, body){ + var resp = JSON.parse(body); + if(resp.items.length > 0) { + var vid_url = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet,id&key="+key+"&id="; for(var i = 0; i < resp.items.length; i++) { - if(similarity(resp.items[i].snippet.localized.title, msg.title) > 0.75) { - found = true; - element = { - title: resp.items[i].snippet.localized.title, - duration: parseInt(durationToSeconds(resp.items[i].contentDetails.duration)), - id: resp.items[i].id, - start: 0, - end: parseInt(durationToSeconds(resp.items[i].contentDetails.duration)), + vid_url += resp.items[i].id.videoId + ","; + } + request({ + type: "GET", + url: vid_url + }, function(error, response, body) { + var resp = JSON.parse(body); + var found = false; + var element = {}; + for(var i = 0; i < resp.items.length; i++) { + if(similarity(resp.items[i].snippet.localized.title, msg.title) > 0.75) { + found = true; + element = { + title: resp.items[i].snippet.localized.title, + duration: parseInt(durationToSeconds(resp.items[i].contentDetails.duration)), + id: resp.items[i].id, + start: 0, + end: parseInt(durationToSeconds(resp.items[i].contentDetails.duration)), + } + break; } - break; } - } - if(found) { - db.collection(channel).update({"id": msg.id}, { - $set: element - }, function(err, docs) { - if(docs.nModified == 1) { - element.new_id = element.id; - element.id = msg.id; - io.to(channel).emit("channel", {type: "changed_values", value: element}); - } - }); - } - }); - } - }); + if(found) { + db.collection(channel).update({"id": msg.id}, { + $set: element + }, function(err, docs) { + if(docs.nModified == 1) { + element.new_id = element.id; + element.id = msg.id; + io.to(channel).emit("channel", {type: "changed_values", value: element}); + } + }); + } + }); + } + }); + } + catch(e){ + console.log(e); } }); } diff --git a/server/public/assets/html/embed.html b/server/public/assets/html/embed.html index 085347e7..7b8e81d3 100755 --- a/server/public/assets/html/embed.html +++ b/server/public/assets/html/embed.html @@ -7,10 +7,10 @@ - - - - + + + + diff --git a/server/public/assets/js/embed.js b/server/public/assets/js/embed.js index 08b03308..a0004916 100755 --- a/server/public/assets/js/embed.js +++ b/server/public/assets/js/embed.js @@ -1,4 +1,6 @@ - +var slider_type = "horizontal"; +var timed_remove_check; +var gotten_np = false; var song_title = ""; var paused = false; var player_ready = false; diff --git a/server/public/assets/js/list.js b/server/public/assets/js/list.js index b7c9f0ff..b334ecb1 100755 --- a/server/public/assets/js/list.js +++ b/server/public/assets/js/list.js @@ -153,7 +153,7 @@ var List = { changedValues: function(song) { var i = List.getIndexOfSong(song.id); - if(i >= 0) { + if(i >= 0 && window.location.pathname != "/") { full_playlist[i].title = song.title; full_playlist[i].duration = song.duration; full_playlist[i].start = song.start; @@ -289,26 +289,34 @@ var List = { $("#settings").css("opacity", "1"); $("#wrapper").css("opacity", "1"); - clearTimeout(timed_remove_check); - timed_remove_check = setTimeout(function() { - $.each(full_playlist, function(j, _current_song) { - $.getJSON('https://www.googleapis.com/youtube/v3/videos?id=' + _current_song.id - + "&key=" + api_key + "&part=snippet", - function (data, status, xhr) { - if (data.items.length == 0) { - setTimeout(function() { - socket.emit("error_video", {channel: chan.toLowerCase(), id: _current_song.id, title: _current_song.title}); - }, 500); - } + if(!embed) { + clearTimeout(timed_remove_check); + timed_remove_check = setTimeout(function() { + if(full_playlist.length > 0) { + List.check_error_videos(0); + } + }, 1500); + } + }, - }).error(function (xhr, errorType, exception) { - //var errorMessage = exception || xhr.statusText || xhr.responseText; - setTimeout(function() { - socket.emit("error_video", {channel: chan.toLowerCase(), id: _current_song.id, title: _current_song.title}); - }, 500); - }); + check_error_videos: function(i) { + console.log(i); + $.getJSON('https://www.googleapis.com/youtube/v3/videos?id=' + full_playlist[i].id + + "&key=" + api_key + "&part=snippet", + function (data, status, xhr) { + if (data.items.length == 0) { + socket.emit("error_video", {channel: chan.toLowerCase(), id: full_playlist[i].id, title: full_playlist[i].title}); + } + if(full_playlist.length > i + 1 && window.location.pathname != "/") { + List.check_error_videos(i + 1); + } + + }).error(function (xhr, errorType, exception) { + socket.emit("error_video", {channel: chan.toLowerCase(), id: full_playlist[i].id, title: full_playlist[i].title}); + if(full_playlist.length > i + 1 && window.location.pathname != "/") { + List.check_error_videos(i + 1); + } }); - }, 1500); }, dynamicContentPageJumpTo: function(page) { diff --git a/server/public/assets/js/player.js b/server/public/assets/js/player.js index d4b143f0..b7c93cee 100755 --- a/server/public/assets/js/player.js +++ b/server/public/assets/js/player.js @@ -594,6 +594,12 @@ var Player = { //currDurr = currDurr - Player.np.start; minutes = Math.floor(currDurr / 60); seconds = currDurr - (minutes * 60); + /*if(isNan(minutes)) { + minutes = 0; + } + if(isNan(seconds)) { + seconds = 0; + }*/ document.getElementById("duration").innerHTML = Helper.pad(minutes)+":"+Helper.pad(seconds)+" / "+Helper.pad(dMinutes)+":"+Helper.pad(dSeconds); per = (100 / duration) * currDurr; if(per >= 100) {