NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Youtube Load All Comments
// @author Flipperbw
// @version 1.1.1
// @include /http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-\_]*)(&(amp;)?[\w\?=]*)?/
// @require http://code.jquery.com/jquery-latest.min.js
// ==/UserScript==
console.log('All comments loaded');
var com_target = document.querySelector('#watch-discussion');
var load_all_clicked = false;
var discon = false;
var com_div = '<div id="load_all_comments" style="float: right; cursor: pointer"></div>';
var com_text = 'Show All';
var loading_text = '<span class="yt-spinner"><span class="yt-spinner-img yt-sprite" title="Loading icon"></span>Loading...</span>';
var all_com_div = $(com_div);
all_com_div.html(com_text);
var sep = $('<div style="float: right"> | </div>');
var expand_div = '<div id="exp_all_comments" style="float: right; cursor: pointer"></div>';
var expand_text = 'Expand';
var expand_loading_text = '<span class="yt-spinner"><span class="yt-spinner-img yt-sprite" title="Loading icon"></span>Expanding...</span>';
var expand_com_div = $(expand_div);
expand_com_div.html(expand_text);
var clickon = function () {
all_com_div.unbind("click");
console.log('clicking');
load_all_clicked = true;
com_observer.disconnect();
all_com_div.html(loading_text);
all_com_div.click(clickoff);
com_observer.observe(com_target, com_config);
click_button();
};
var clickoff = function() {
all_com_div.unbind("click");
console.log('stopping clicking');
com_observer.disconnect();
all_com_div.html(com_text);
all_com_div.click(clickon);
};
all_com_div.click(clickon);
expand_com_div.click(function() {
com_observer.disconnect();
expand_com_div.html(expand_loading_text);
expand_all();
expand_com_div.html(expand_text);
});
var com_observer = new MutationObserver(function(mutations) {
var button_found = false;
mutations.forEach(function(mutation) {
var added_nodes = mutation.addedNodes;
if (added_nodes && added_nodes.length && (added_nodes.length > 0)) {
for (i = 0; i < added_nodes.length; ++i) {
var n = added_nodes[i];
if (n.id == 'comment-section-renderer') {
console.log('Adding all comments link...');
var comments_text = $('.comment-section-header-renderer');
if (comments_text) {
com_observer.disconnect();
comments_text.append(all_com_div);
comments_text.append(sep);
comments_text.append(expand_com_div);
console.log('Added links.');
com_observer.observe(com_target, com_config);
}
button_found = true;
break;
}
else if (n.type == 'button' && (n.className.indexOf('comment-section-renderer-paginator') > -1) && load_all_clicked) {
button_found = true;
click_button();
break;
}
}
}
});
if (!button_found && load_all_clicked) {
com_observer.disconnect();
expand_all();
console.log('Finished loading comments.');
all_com_div.html(com_text);
}
});
function expand_all() {
console.log('Expanding all comments');
var expanders = $('button.comment-replies-renderer-paginator');
$.each(expanders, function(k,v) {
v.click();
});
console.log('Finished expanding.');
}
function click_button() {
var target = document.querySelector('button.comment-section-renderer-paginator');
if (target) {
target.click();
}
else {
all_com_div.html(com_text);
}
}
var com_config = { attributes: false, childList: true, characterData: false, subtree: true };
com_observer.observe(com_target, com_config);