Everything except img error handling working

This commit is contained in:
Kasper Rynning-Tønnesen
2017-11-09 17:14:19 +01:00
parent f86a5382f0
commit 3050d56bf8
3 changed files with 135 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ function get_correct_info(song_generated, channel, broadcast) {
}
}, function(err, docs) {
if(broadcast) {
song_generated.new_id = song_generated.id;
io.to(channel).emit("channel", {type: "changed_values", value: song_generated});
}
});
@@ -39,6 +40,115 @@ function get_correct_info(song_generated, channel, broadcast) {
});
}
function check_error_video(msg, channel) {
if(!msg.hasOwnProperty("id") || !msg.hasOwnProperty("title")) {
socket.emit("update_required");
return;
}
request({
type: "GET",
url: "https://www.googleapis.com/youtube/v3/videos?part=id&key="+key+"&id=" + msg.id,
}, function(error, response, body) {
var resp = JSON.parse(body);
//console.log(resp.pageInfo.totalResults);
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);
//console.log(yt_url);
request({
method: "GET",
url: yt_url,
}, function(error, response, body){
var resp = JSON.parse(body);
if(resp.items.length > 0) {
//console.log(resp.items);
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 = {};
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;
}
}
if(found) {
console.log("time to change", msg.id, element);
db.collection(channel).update({"id": msg.id}, {
$set: element
}, function(err, docs) {
console.log(err, docs);
element.new_id = element.id;
element.id = msg.id;
io.to(channel).emit("channel", {type: "changed_values", value: element});
});
}
});
}
});
}
});
}
function similarity(s1, s2) {
var longer = s1;
var shorter = s2;
if (s1.length < s2.length) {
longer = s2;
shorter = s1;
}
var longerLength = longer.length;
if (longerLength == 0) {
return 1.0;
}
return (longerLength - editDistance(longer, shorter)) / parseFloat(longerLength);
}
function editDistance(s1, s2) {
s1 = s1.toLowerCase();
s2 = s2.toLowerCase();
var costs = new Array();
for (var i = 0; i <= s1.length; i++) {
var lastValue = i;
for (var j = 0; j <= s2.length; j++) {
if (i == 0)
costs[j] = j;
else {
if (j > 0) {
var newValue = costs[j - 1];
if (s1.charAt(i - 1) != s2.charAt(j - 1))
newValue = Math.min(Math.min(newValue, lastValue),
costs[j]) + 1;
costs[j - 1] = lastValue;
lastValue = newValue;
}
}
}
if (i > 0)
costs[s2.length] = lastValue;
}
return costs[s2.length];
}
function durationToSeconds(duration) {
var matches = duration.match(time_regex);
hours= parseInt(matches[12])||0;
@@ -47,4 +157,5 @@ function durationToSeconds(duration) {
return hours*60*60+minutes*60+seconds;
}
module.exports.check_error_video = check_error_video;
module.exports.get_correct_info = get_correct_info;