MAL Randomizer

Picks 1,5 or 10 random anime from a users MAL anime list or manga list

  1. // ==UserScript==
  2. // @name MAL Randomizer
  3. // @version 2.5
  4. // @license MIT
  5. // @description Picks 1,5 or 10 random anime from a users MAL anime list or manga list
  6. // @match *://myanimelist.net/animelist/*
  7. // @match *://myanimelist.net/mangalist/*
  8. // @grant GM_addStyle
  9. // @namespace https://gf.qytechs.cn/users/231681
  10. // ==/UserScript==
  11.  
  12. /*
  13. ***DISCLAIMER***
  14.  
  15. This code is an edit of an existing MAL Randomizer.
  16. The source code can be found through the following link so check it out.
  17. https://gist.github.com/IA21/866c8c380165adf2caac7a421f608342
  18. This code is also riveted with errors, feel free to fix them up or edit
  19. this code in any way you see fit. If I have time, I'll look into some of
  20. the issues myself.
  21. Found Issues:
  22. - Randomizer only uses first 300 items unless loaded in first
  23. */
  24.  
  25. GM_addStyle ( `
  26. .ShowItems {
  27. display: table-row-group !important;
  28. }
  29.  
  30. .HideItems {
  31. display: none !important;
  32. }
  33.  
  34. .stats {
  35. user-select: none;
  36. }
  37. ` );
  38.  
  39. /* Just a random function */
  40. function randomInt(min, max) {
  41. return Math.floor(Math.random() * (max - min + 1)) + min;
  42. }
  43.  
  44. /* Resets ALL Classes to "list-item HideItems" */
  45. function reset(BaseClassList, ShowingClassList, HidingClassList) {
  46. if (BaseClassList.length !== 0) {
  47. for (var classes1 in BaseClassList) {
  48. BaseClassList[classes1].className = "list-item HideItems";
  49. }
  50. }
  51. if (ShowingClassList.length !== 0) {
  52. for (var classes2 in ShowingClassList) {
  53. ShowingClassList[classes2].className = "list-item HideItems";
  54. }
  55. }
  56. if (HidingClassList.length !== 0) {
  57. for (var classes3 in HidingClassList) {
  58. HidingClassList[classes3].className = "list-item HideItems";
  59. }
  60. }
  61. }
  62.  
  63. /* Chooses the classes to show */
  64. function execute(numberOfItems) {
  65. var getShowingClassList = document.getElementsByClassName("list-item ShowItems");
  66. var getHidingClassList = document.getElementsByClassName("list-item HideItems");
  67. var getBaseClassList = document.getElementsByClassName("list-item");
  68. reset(getBaseClassList, getShowingClassList, getHidingClassList);
  69. var hiddenClassList = document.getElementsByClassName("list-item HideItems");
  70. for (var count = 0; count < numberOfItems; count++){
  71. var chosenRandomInt = randomInt(0, hiddenClassList.length);
  72. var target = hiddenClassList[chosenRandomInt];
  73. try{
  74. target.className = "list-item ShowItems";
  75. } catch(err) {
  76. if (hiddenClassList.length !== 0){
  77. count--;
  78. }
  79. }
  80. }
  81. }
  82.  
  83. /* Main Body Code */
  84. (function() {
  85. 'use strict';
  86.  
  87. /* Button Styles and Creation */
  88. var container = document.createElement("span");
  89. var randButton = document.createElement("a");
  90. var randButton5 = document.createElement("a");
  91. var randButton10 = document.createElement("a");
  92. randButton.innerHTML = "<i class='fa-solid fa-random'></i> Random 1";
  93. randButton5.innerHTML = "<i class='fa-solid fa-random'></i> Random 5";
  94. randButton10.innerHTML = "<i class='fa-solid fa-random'></i> Random 10";
  95. randButton.style.cursor = "pointer";
  96. randButton5.style.cursor = "pointer";
  97. randButton10.style.cursor = "pointer";
  98. randButton.style.marginLeft = "15px";
  99. randButton5.style.marginLeft = "15px";
  100. randButton10.style.marginLeft = "15px";
  101. container.style.left = "4px";
  102. container.className = "stats";
  103. container.appendChild(randButton);
  104. container.appendChild(randButton5);
  105. container.appendChild(randButton10);
  106. var textlist = document.getElementsByClassName("text");
  107. var text = document.getElementsByClassName("text")[textlist.length - 1];
  108. document.getElementsByClassName("list-status-title")[0].insertBefore(container, text);
  109. /* On-screen button commands */
  110. randButton.onclick = function() {
  111. var numberOfItems = 1;
  112. execute(numberOfItems);
  113. };
  114. randButton5.onclick = function() {
  115. var numberOfItems = 5;
  116. execute(numberOfItems);
  117. };
  118. randButton10.onclick = function() {
  119. var numberOfItems = 10;
  120. execute(numberOfItems);
  121. };
  122. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址