BunkrSorter

Sorts bunkr items by size. Biggest first

  1. // ==UserScript==
  2. // @name BunkrSorter
  3. // @namespace https://github.com/runisco
  4. // @version 3.14
  5. // @supportURL https://github.com/Runisco/BunkrSorter/issues
  6. // @description Sorts bunkr items by size. Biggest first
  7. // @author Runisco
  8. // @match https://bunkr.is/a/*
  9. // @match https://bunkr.ru/a/*
  10. // @match https://bunkrr.ru/a/*
  11. // @match https://bunkr.su/a/*
  12. // @match https://bunkr.la/a/*
  13. // @match https://bunkrr.su/a/*
  14. // @match https://bunkr.sk/a/*
  15. // @match https://bunkr.si/a/*
  16. // @match https://bunkr.ws/a/*
  17. // @match https://bunkr.se/a/*
  18. // @match https://bunkr.fi/a/*
  19. // @match https://bunkr.ci/a/*
  20. // @match https://bunkr.ax/a/*
  21. // @match https://bunkr.ac/a/*
  22. // @match https://bunkr.site/a/*
  23. // @match https://bunkr.black/a/*
  24. // @match https://bunkr.red/a/*
  25. // @match https://bunkr.ps/a/*
  26. // @match https://bunkr.pk/a/*
  27. // @match https://bunkr.ph/a/*
  28. // @icon https://www.google.com/s2/favicons?sz=64&domain=bunkr.is
  29. // @require https://code.jquery.com/jquery-3.3.1.min.js
  30. // @grant none
  31. // ==/UserScript==
  32.  
  33. /* globals $ */
  34.  
  35. var sortButton = $('<a href="#" class="sort" id="startSort">sort items</a>');
  36. sortButton.insertAfter($('p.subtitle'));
  37. $('#startSort').css({'margin-left':'10px'});
  38. // $('#startlistSort').css({'margin-left':'10px'});
  39. var sortButtonFriends = $('<a id="startSortFriends" class="py-2 px-4 rounded inline-flex items-center justify-center" href="#" style="background: #5253F6;color: #F6F652;font-weight: bold;">Sort Items</a>');
  40. // var listButtonFriends = $('<li><a href="#" class="listSort" id="startlistSort">sort & list items</a></li>');
  41. // console.log($('a#statsLink').length)
  42. // sortButtonFriends.insertBefore($('a#statsLink'))
  43. // sortButtonFriends.insertBefore($('div.flex-row-reverse'))
  44. $('div.flex-row-reverse').prepend(sortButtonFriends)
  45. // listButtonFriends.insertAfter(sortButtonFriends)
  46.  
  47. var debug = true
  48. var debugOnlyOne = false
  49. var identifiedClass = '';
  50. var identifiedContainer = '';
  51.  
  52. $('#startSort').click(function(){
  53. if (debug || debugOnlyOne){console.log("old startSort clicked")}
  54. var items = [];
  55. $('div.image-container.column').each(function(e){
  56. let item = []
  57. let size, sizeMultiplier;
  58. item.push($(this));
  59.  
  60. if (debug || debugOnlyOne){console.log($(this))}
  61. $(this).remove();
  62.  
  63. let sizeInfo = $(this).find('p.file-size').text();
  64. let sizeSplit = sizeInfo.split(" ");
  65. size = parseFloat(sizeSplit[0]);
  66. if (debug || debugOnlyOne) {console.log(sizeInfo + " " + size)}
  67.  
  68. let sizeMultiplierDeterminer = sizeSplit[1]
  69. if (sizeMultiplierDeterminer == "KiB"){
  70. sizeMultiplier = (1/1024);
  71. } else if (sizeMultiplierDeterminer == "KB"){
  72. sizeMultiplier = (1/1024);
  73. } else if (sizeMultiplierDeterminer == "kB"){
  74. sizeMultiplier = (1/1024);
  75. }else if (sizeMultiplierDeterminer == "MiB"){
  76. sizeMultiplier = 1;
  77. } else if (sizeMultiplierDeterminer == "MB"){
  78. sizeMultiplier = 1;
  79. } else if (sizeMultiplierDeterminer == "GiB"){
  80. sizeMultiplier = 1024;
  81. } else if (sizeMultiplierDeterminer == "GB"){
  82. sizeMultiplier = 1024;
  83. }
  84. item.push(size * sizeMultiplier);
  85. if (debug || debugOnlyOne) {console.log(size + " = " + size * sizeMultiplier)}
  86.  
  87. items.push(item);
  88. $(this).remove();
  89. debugOnlyOne = false;
  90. });
  91.  
  92. var sortedItems = items.sort(function(a, b) {
  93. return b[1] - a[1];
  94. });
  95.  
  96. for (let i=0; i < sortedItems.length; i++){
  97. $('div#table').append(sortedItems[i][0]);
  98. }
  99. })
  100.  
  101. $('#startSortFriends').click(function(){
  102. if (debug || debugOnlyOne){console.log("New startSortFriends clicked")}
  103.  
  104. var items = [];
  105.  
  106. if ($('div.overflow-hidden').length != 0){
  107. identifiedClass = 'div.overflow-hidden'
  108. } else if ($('div.grid-images_box').length != 0) {
  109. identifiedClass = 'div.grid-images_box'
  110. }
  111.  
  112. if ($('div.grid').length != 0){
  113. identifiedContainer = 'div.overflow-hidden'
  114. } else if ($('div.grid-images_box').length != 0) {
  115. identifiedContainer = 'div.grid-images'
  116. }
  117.  
  118.  
  119. $(identifiedClass).each(function(e){
  120. let item = []
  121. let size, sizeMultiplier;
  122. item.push($(this));
  123.  
  124. if (debug || debugOnlyOne){console.log($(this))}
  125. $(this).remove();
  126.  
  127. let sizeInfo = $(this).find('p:eq(1)').text();
  128. let sizeSplit = sizeInfo.split(" ");
  129. size = parseFloat(sizeSplit[0]);
  130. if (debug || debugOnlyOne) {console.log(sizeInfo + " " + size)}
  131.  
  132. let sizeMultiplierDeterminer = sizeSplit[1]
  133. if (sizeMultiplierDeterminer == "KiB"){
  134. sizeMultiplier = (1/1024);
  135. } else if (sizeMultiplierDeterminer == "KB"){
  136. sizeMultiplier = (1/1024);
  137. } else if (sizeMultiplierDeterminer == "kB"){
  138. sizeMultiplier = (1/1024);
  139. }else if (sizeMultiplierDeterminer == "MiB"){
  140. sizeMultiplier = 1;
  141. } else if (sizeMultiplierDeterminer == "MB"){
  142. sizeMultiplier = 1;
  143. } else if (sizeMultiplierDeterminer == "GiB"){
  144. sizeMultiplier = 1024;
  145. } else if (sizeMultiplierDeterminer == "GB"){
  146. sizeMultiplier = 1024;
  147. }
  148. item.push(size * sizeMultiplier);
  149. if (debug || debugOnlyOne) {console.log(size + " = " + size * sizeMultiplier)}
  150.  
  151. items.push(item);
  152. $(this).remove();
  153. debugOnlyOne = false;
  154. });
  155.  
  156. var sortedItems = items.sort(function(a, b) {
  157. return b[1] - a[1];
  158. });
  159.  
  160. for (let i=0; i < sortedItems.length; i++){
  161. $(identifiedContainer).append(sortedItems[i][0]);
  162. }
  163. })
  164.  
  165. // $('#startlistSort').click(function(){
  166. // if (debug || debugOnlyOne){console.log("New startlistSort clicked")}
  167.  
  168. // var items = [];
  169.  
  170. // if ($('div.overflow-hidden').length != 0){
  171. // identifiedClass = 'div.overflow-hidden'
  172. // } else if ($('div.grid-images_box').length != 0) {
  173. // identifiedClass = 'div.grid-images_box'
  174. // }
  175.  
  176. // if ($('div.grid').length != 0){
  177. // identifiedContainer = 'div.overflow-hidden'
  178. // } else if ($('div.grid-images_box').length != 0) {
  179. // identifiedContainer = 'div.grid-images'
  180. // }
  181.  
  182.  
  183. // $(identifiedClass).each(function(e){
  184. // let item = []
  185. // let size, sizeMultiplier;
  186. // $(this).find('img').remove()
  187. // item.push($(this));
  188.  
  189. // if (debug || debugOnlyOne){console.log($(this))}
  190. // $(this).remove();
  191.  
  192. // let sizeInfo = $(this).find('p:eq(1)').text();
  193. // let sizeSplit = sizeInfo.split(" ");
  194. // size = parseFloat(sizeSplit[0]);
  195. // if (debug || debugOnlyOne) {console.log(sizeInfo + " " + size)}
  196.  
  197. // let sizeMultiplierDeterminer = sizeSplit[1]
  198. // if (sizeMultiplierDeterminer == "KiB"){
  199. // sizeMultiplier = (1/1024);
  200. // } else if (sizeMultiplierDeterminer == "KB"){
  201. // sizeMultiplier = (1/1024);
  202. // } else if (sizeMultiplierDeterminer == "kB"){
  203. // sizeMultiplier = (1/1024);
  204. // }else if (sizeMultiplierDeterminer == "MiB"){
  205. // sizeMultiplier = 1;
  206. // } else if (sizeMultiplierDeterminer == "MB"){
  207. // sizeMultiplier = 1;
  208. // } else if (sizeMultiplierDeterminer == "GiB"){
  209. // sizeMultiplier = 1024;
  210. // } else if (sizeMultiplierDeterminer == "GB"){
  211. // sizeMultiplier = 1024;
  212. // }
  213. // item.push(size * sizeMultiplier);
  214. // if (debug || debugOnlyOne) {console.log(size + " = " + size * sizeMultiplier)}
  215.  
  216. // items.push(item);
  217. // $(this).remove();
  218. // debugOnlyOne = false;
  219. // });
  220.  
  221. // var sortedItems = items.sort(function(a, b) {
  222. // return b[1] - a[1];
  223. // });
  224.  
  225. // var newList = $('<ul></ul>')
  226. // for (let i=0; i < sortedItems.length; i++){
  227. // // $(identifiedContainer).append(sortedItems[i][0]);
  228. // newList.append(sortedItems[i][0]);
  229. // }
  230. // newList.insertAfter(identifiedContainer)
  231. // $(identifiedContainer).remove()
  232. // $('.grid-images_box-link').css('height','50px')
  233. // })