sorts camwhores descending by viewers
当前为
// ==UserScript==
// @name Chaturbate sort
// @namespace Lurk4
// @author itsmewantscaps
// @description sorts camwhores descending by viewers
// @include https://chaturbate.com/*
// @include https://www.chaturbate.com/*
// @version 1
// @grant GM_addStyle
// @run-at document-end
// ==/UserScript==
function sortCamwhores() {
var i
var elems
var camsinfo
var res = null
var mainList = null
var contentHolder = document.getElementsByClassName("list");
if (contentHolder !== null && contentHolder.length > 0) {
for (i = 0; i < contentHolder.length; i++) {
res = [];
mainList = contentHolder[i];
elems = mainList.getElementsByClassName("cams");
for (j = elems.length-1; j >= 0 ; j--) {
camsinfo = elems[j].innerText.match(/(\d+) min.*, (\d+) viewer.*\b/);
res.push({
"element": elems[j].parentElement.parentElement.parentElement,
"viewers": camsinfo !== null && camsinfo.length > 2 ? camsinfo[2] : 0
});
mainList.removeChild(elems[j].parentElement.parentElement.parentElement);
}
res.sort(function(a, b) { return b.viewers - a.viewers; });
for (j = 0; j < res.length; j++) {
mainList.appendChild(res[j].element);
}
}
}
}
sortCamwhores() ;
//https://stackoverflow.com/questions/3219758/detect-changes-in-the-dom
var observeDOM = (function(){
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
eventListenerSupported = window.addEventListener;
return function(obj, callback){
if( MutationObserver ){
// define a new observer
var obs = new MutationObserver(function(mutations, observer){
if( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
{
callback( observer);
}
});
// have the observer observe foo for changes in children
obs.observe( obj, { childList:true, subtree:true });
}
else if( eventListenerSupported ){
obj.addEventListener('DOMNodeInserted', callback, false);
obj.addEventListener('DOMNodeRemoved', callback, false);
}
};
})();
observeDOM( document.getElementById('main') ,function( observer){
observer.disconnect();
sortCamwhores() ;
observer.observe( document.getElementById('main') , { childList:true, subtree:true });
});