mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	Merge pull request #218 from zoff-music/revert-217-feature/song-replacement
Revert "Feature/song replacement"
This commit is contained in:
		@@ -57,20 +57,6 @@ module.exports = function() {
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        socket.on("error_video", function(msg) {
 | 
			
		||||
            try {
 | 
			
		||||
                var _list = msg.channel;
 | 
			
		||||
                if(_list.length == 0) return;
 | 
			
		||||
                coll = emojiStrip(_list).toLowerCase();
 | 
			
		||||
                coll = coll.replace("_", "");
 | 
			
		||||
                coll = encodeURIComponent(coll).replace(/\W/g, '');
 | 
			
		||||
                coll = filter.clean(coll);
 | 
			
		||||
            } catch(e) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            Search.check_error_video(msg, coll);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        socket.on("get_spread", function(){
 | 
			
		||||
            db.collection("connected_users").find({"_id": "total_users"}, function(err, tot) {
 | 
			
		||||
                db.collection("connected_users").find({"_id": "offline_users"}, function(err, off) {
 | 
			
		||||
 
 | 
			
		||||
@@ -84,7 +84,6 @@ function add_function(arr, coll, guid, offline, socket) {
 | 
			
		||||
                                    db.collection(coll).update({id: id}, {"added": added,"guids":guids,"id":id,"now_playing":np,"title":title,"votes":votes, "duration":duration, "start": start, "end": end}, {upsert: true}, function(err, docs){
 | 
			
		||||
                                        if(np)
 | 
			
		||||
                                        {
 | 
			
		||||
                                            var new_song = {"added": added,"guids":guids,"id":id,"now_playing":np,"title":title,"votes":votes, "duration":duration, "start": start, "end": end};
 | 
			
		||||
                                            List.send_list(coll, undefined, false, true, false);
 | 
			
		||||
                                            db.collection(coll).update({views:{$exists:true}}, {$set:{startTime: Functions.get_time()}});
 | 
			
		||||
                                            List.send_play(coll, undefined);
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,7 @@ function get_correct_info(song_generated, channel, broadcast) {
 | 
			
		||||
                        "title": song_generated.title,
 | 
			
		||||
                    }
 | 
			
		||||
                }, function(err, docs) {
 | 
			
		||||
                    if(broadcast && docs.nModified == 1) {
 | 
			
		||||
                        song_generated.new_id = song_generated.id;
 | 
			
		||||
                    if(broadcast) {
 | 
			
		||||
                        io.to(channel).emit("channel", {type: "changed_values", value: song_generated});
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
@@ -40,110 +39,6 @@ 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);
 | 
			
		||||
        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 = {};
 | 
			
		||||
                        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) {
 | 
			
		||||
                            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});
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
                        }
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
@@ -152,5 +47,4 @@ 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;
 | 
			
		||||
 
 | 
			
		||||
@@ -153,21 +153,16 @@ var List = {
 | 
			
		||||
 | 
			
		||||
    changedValues: function(song) {
 | 
			
		||||
        var i = List.getIndexOfSong(song.id);
 | 
			
		||||
        if(i >= 0) {
 | 
			
		||||
            full_playlist[i].title = song.title;
 | 
			
		||||
            full_playlist[i].duration = song.duration;
 | 
			
		||||
            full_playlist[i].start = song.start;
 | 
			
		||||
            full_playlist[i].end = song.end;
 | 
			
		||||
            full_playlist[i].id = song.new_id;
 | 
			
		||||
        full_playlist[i].title = song.title;
 | 
			
		||||
        full_playlist[i].duration = song.duration;
 | 
			
		||||
        full_playlist[i].start = song.start;
 | 
			
		||||
        full_playlist[i].end = song.end;
 | 
			
		||||
 | 
			
		||||
            $("#" + song.id).find(".vote-container").attr("title", song.title);
 | 
			
		||||
            $("#" + song.id).find(".list-title").attr("title", song.title);
 | 
			
		||||
            $("#" + song.id).find(".list-title").text(song.title);
 | 
			
		||||
            var _temp_duration = Helper.secondsToOther(song.duration);
 | 
			
		||||
            $("#" + song.id).find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]));
 | 
			
		||||
            $("#" + song.id).find(".list-image").attr("style", "background-image:url('//img.youtube.com/vi/"+song.new_id+"/mqdefault.jpg');");
 | 
			
		||||
            $("#" + song.id).attr("id", song.new_id);
 | 
			
		||||
        }
 | 
			
		||||
        $("#" + song.id).find(".vote-container").attr("title", song.title);
 | 
			
		||||
        $("#" + song.id).find(".list-title").attr("title", song.title);
 | 
			
		||||
        $("#" + song.id).find(".list-title").text(song.title);
 | 
			
		||||
        var _temp_duration = Helper.secondsToOther(song.duration);
 | 
			
		||||
        $("#" + song.id).find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    insertAtBeginning: function(song_info, transition) {
 | 
			
		||||
@@ -939,8 +934,7 @@ var List = {
 | 
			
		||||
        var video_id    = _song_info.id;
 | 
			
		||||
        var video_title = _song_info.title;
 | 
			
		||||
        var video_votes = _song_info.votes;
 | 
			
		||||
        var video_thumb_url = "//img.youtube.com/vi/"+video_id+"/mqdefault.jpg";
 | 
			
		||||
        var video_thumb = "background-image:url('" + video_thumb_url + "');";
 | 
			
		||||
        var video_thumb = "background-image:url('//img.youtube.com/vi/"+video_id+"/mqdefault.jpg');";
 | 
			
		||||
        var song        = $("<div>"+list_html+"</div>");
 | 
			
		||||
        var image_attr  = "style";
 | 
			
		||||
        if(_song_info.hasOwnProperty("start") && _song_info.hasOwnProperty("end")) {
 | 
			
		||||
@@ -972,19 +966,6 @@ var List = {
 | 
			
		||||
            attr     = ".vote-container";
 | 
			
		||||
            del_attr = "delete_button";
 | 
			
		||||
 | 
			
		||||
            var url = "https://zoff.me:8081/https://img.youtube.com/vi/"+video_id+"/mqdefault.jpg";
 | 
			
		||||
            $.ajax({
 | 
			
		||||
                type: "HEAD",
 | 
			
		||||
                url: url,
 | 
			
		||||
                error: function(e) {
 | 
			
		||||
                    if(e.status == 404) {
 | 
			
		||||
                        setTimeout(function() {
 | 
			
		||||
                            socket.emit("error_video", {channel: chan.toLowerCase(), id: video_id, title: video_title});
 | 
			
		||||
                        }, 500);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            var _temp_duration = Helper.secondsToOther(_song_info.duration);
 | 
			
		||||
            song.find(".card-duration").text(Helper.pad(_temp_duration[0]) + ":" + Helper.pad(_temp_duration[1]));
 | 
			
		||||
        }else if(!list){
 | 
			
		||||
@@ -1020,7 +1001,6 @@ var List = {
 | 
			
		||||
        song.find(".list-title").attr("title", video_title);
 | 
			
		||||
        song.find(attr).attr("data-video-id", video_id);
 | 
			
		||||
        song.find(".list-image").attr(image_attr,video_thumb);
 | 
			
		||||
        song.find(".list-image-placeholder").attr("src", video_thumb_url);
 | 
			
		||||
        song.find(".list-suggested-image").attr(image_attr,video_thumb);
 | 
			
		||||
        song.find("."+del_attr).attr("data-video-id", video_id);
 | 
			
		||||
        return song.html();
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,8 @@
 | 
			
		||||
        <div id="list-song" class="card left-align list-song playlist-element waves-effect waves-light">
 | 
			
		||||
            <div class="clickable vote-container" title="Vote!">
 | 
			
		||||
                <a class="clickable center-align votebg">
 | 
			
		||||
                    <span class="card-image cardbg list-image" style="background-image:url('/assets/images/loading.png');"></span>
 | 
			
		||||
                    <span class="lazy card-image cardbg list-image" style="background-image:url('/assets/images/loading.png');">
 | 
			
		||||
                    </span>
 | 
			
		||||
                    <span class="card-duration">
 | 
			
		||||
                        01:00
 | 
			
		||||
                    </span>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user