Chaturbate Sort Models

Sorts Models in descending (High to Low) order of viewers

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
  1. // ==UserScript==
  2. // @name Chaturbate Sort Models
  3. // @namespace https://openuserjs.org/users/Notorious https://greasyfork.org/en/users/668999-notorious
  4. // @version 1.0.4
  5. // @description Sorts Models in descending (High to Low) order of viewers
  6. // @author Notorious
  7. // @include https://chaturbate.com/*
  8. // @include https://*.chaturbate.com/*
  9. // @grant none
  10. // @license MIT
  11. // @run-at document-end
  12. // ==/UserScript==
  13.  
  14.  
  15. (function(){
  16.  
  17. function sortCamwhores() {
  18. var i
  19. var elems
  20. var camsinfo
  21. var res = null
  22. var mainList = null
  23. var contentHolder= document.getElementsByClassName("list");;
  24. var subClass= "cams";
  25.  
  26. if (contentHolder !== null && (contentHolder.length > 0)) {
  27. for (i = 0; i < contentHolder.length; i++) {
  28. res = [];
  29. mainList = contentHolder[i];
  30. elems = mainList.getElementsByClassName(subClass);
  31. for (var j = elems.length - 1; j >= 0; j--) {
  32. var info=elems[j].innerText.replace(/\,/g, ".");
  33. camsinfo = info.match(/(.*)(\. )(\d+)(.*)/);
  34.  
  35. var pElement = elems[j].parentElement.parentElement.parentElement;
  36. res.push({
  37. "element": pElement,
  38. "viewers": camsinfo !== null && camsinfo.length > 2 ? camsinfo[3] : 0
  39. });
  40.  
  41. mainList.removeChild(pElement);
  42. }
  43. res.sort(function(a, b) {
  44. return b.viewers - a.viewers;
  45. });
  46. for (var jj = 0; jj < res.length; jj++) {
  47. mainList.appendChild(res[jj].element);
  48. }
  49. }
  50. }
  51. }
  52. sortCamwhores();
  53.  
  54. //https://stackoverflow.com/questions/3219758/detect-changes-in-the-dom
  55. var observeDOM = (function() {
  56. var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
  57. eventListenerSupported = window.addEventListener;
  58.  
  59. return function(obj, callback) {
  60. if (MutationObserver) {
  61. // define a new observer
  62. var obs = new MutationObserver(function(mutations, observer) {
  63. if (mutations[0].addedNodes.length) {
  64. callback(observer);
  65. }
  66. });
  67. // have the observer observe foo for changes in children
  68. obs.observe(obj, {
  69. childList: true,
  70. subtree: true
  71. });
  72. } else if (eventListenerSupported) {
  73. obj.addEventListener('DOMNodeInserted', callback, false);
  74. obj.addEventListener('DOMNodeRemoved', callback, false);
  75. }
  76. };
  77. })();
  78.  
  79. observeDOM(document.getElementById('main'), function(observer) {
  80. observer.disconnect();
  81. sortCamwhores();
  82. observer.observe(document.getElementById('main'), {
  83. childList: true,
  84. subtree: true
  85. });
  86. });
  87. })();