🏠 Home 

MAL Randomizer

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


Install this script?
// ==UserScript==
// @name        MAL Randomizer
// @version     2.5
// @license     MIT
// @description Picks 1,5 or 10 random anime from a users MAL anime list or manga list
// @match       *://myanimelist.net/animelist/*
// @match       *://myanimelist.net/mangalist/*
// @grant       GM_addStyle
// @namespace   https://greasyfork.org/users/231681
// ==/UserScript==
/*
***DISCLAIMER***
This code is an edit of an existing MAL Randomizer.
The source code can be found through the following link so check it out.
https://gist.github.com/IA21/866c8c380165adf2caac7a421f608342
This code is also riveted with errors, feel free to fix them up or edit
this code in any way you see fit. If I have time, I'll look into some of
the issues myself.
Found Issues:
- Randomizer only uses first 300 items unless loaded in first
*/
GM_addStyle ( `
.ShowItems {
display: table-row-group !important;
}
.HideItems {
display: none !important;
}
.stats {
user-select: none;
}
` );
/* Just a random function */
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
/* Resets ALL Classes to "list-item HideItems" */
function reset(BaseClassList, ShowingClassList, HidingClassList) {
if (BaseClassList.length !== 0) {
for (var classes1 in BaseClassList) {
BaseClassList[classes1].className = "list-item HideItems";
}
}
if (ShowingClassList.length !== 0) {
for (var classes2 in ShowingClassList) {
ShowingClassList[classes2].className = "list-item HideItems";
}
}
if (HidingClassList.length !== 0) {
for (var classes3 in HidingClassList) {
HidingClassList[classes3].className = "list-item HideItems";
}
}
}
/* Chooses the classes to show */
function execute(numberOfItems) {
var getShowingClassList = document.getElementsByClassName("list-item ShowItems");
var getHidingClassList = document.getElementsByClassName("list-item HideItems");
var getBaseClassList = document.getElementsByClassName("list-item");
reset(getBaseClassList, getShowingClassList, getHidingClassList);
var hiddenClassList = document.getElementsByClassName("list-item HideItems");
for (var count = 0; count < numberOfItems; count++){
var chosenRandomInt = randomInt(0, hiddenClassList.length);
var target = hiddenClassList[chosenRandomInt];
try{
target.className = "list-item ShowItems";
} catch(err) {
if (hiddenClassList.length !== 0){
count--;
}
}
}
}
/* Main Body Code */
(function() {
'use strict';
/* Button Styles and Creation */
var container = document.createElement("span");
var randButton = document.createElement("a");
var randButton5 = document.createElement("a");
var randButton10 = document.createElement("a");
randButton.innerHTML = "<i class='fa-solid fa-random'></i> Random 1";
randButton5.innerHTML = "<i class='fa-solid fa-random'></i> Random 5";
randButton10.innerHTML = "<i class='fa-solid fa-random'></i> Random 10";
randButton.style.cursor = "pointer";
randButton5.style.cursor = "pointer";
randButton10.style.cursor = "pointer";
randButton.style.marginLeft = "15px";
randButton5.style.marginLeft = "15px";
randButton10.style.marginLeft = "15px";
container.style.left = "4px";
container.className = "stats";
container.appendChild(randButton);
container.appendChild(randButton5);
container.appendChild(randButton10);
var textlist = document.getElementsByClassName("text");
var text = document.getElementsByClassName("text")[textlist.length - 1];
document.getElementsByClassName("list-status-title")[0].insertBefore(container, text);
/* On-screen button commands */
randButton.onclick = function() {
var numberOfItems = 1;
execute(numberOfItems);
};
randButton5.onclick = function() {
var numberOfItems = 5;
execute(numberOfItems);
};
randButton10.onclick = function() {
var numberOfItems = 10;
execute(numberOfItems);
};
})();