OMDB Button Adder

Adds "Rate on OMDB" button on osu! beatmap pages

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         OMDB Button Adder
// @namespace    omdbButtonAdder
// @version      1.06
// @author       cyndifusic
// @run-at       document-start
// @description  Adds "Rate on OMDB" button on osu! beatmap pages
// @include   http://osu.ppy.sh*
// @include   https://osu.ppy.sh*
// ==/UserScript==

var currentURL = window.location.href;

var extractMapsetID = function (url) {
	var startIndex = url.indexOf("beatmapsets") + 12;
	var go = true;
	var i = startIndex;
	var setID = "";
	while (go) {
		if (url.charAt(i) == "#") {
			go = false;
		} else {
			setID += url.charAt(i);
			i++;
		}
	}
	return setID;
}

var addButton = function () {
	if (currentURL.includes("beatmapsets") && currentURL.includes("#")) {
		var omdbAddress = "https://omdb.nyahh.net/mapset/" + extractMapsetID(currentURL);
		var buttonsDiv = document.getElementsByClassName("beatmapset-header__buttons")[0];
		buttonsDiv.insertAdjacentHTML('beforeend', '<a class="btn-osu-big btn-osu-big--beatmapset-header" href="' + omdbAddress + '" data-turbolinks="false" target="_blank"><span class="btn-osu-big__content"><span class="btn-osu-big__left"><span class="btn-osu-big__text-top">Rate on OMDB</span></span><span class="btn-osu-big__icon"><span class="fa fa-fw"><span class="fas fa-link"></span></span></span></span></a>');
	}
}

var checkURL = function () {
	var doubleCheck = function () {
		if (window.location.href != currentURL) {
			var currentURLIsBeatmap = window.location.href.includes("beatmapsets") && window.location.href.includes("#");
			var previousURLIsBeatmap = currentURL.includes("beatmapsets") && currentURL.includes("#");

			if (currentURLIsBeatmap && previousURLIsBeatmap) {
				if (extractMapsetID(window.location.href) != extractMapsetID(currentURL)) {
					currentURL = window.location.href;
					addButton();
				}
			}

			if (currentURLIsBeatmap && !previousURLIsBeatmap) {
				currentURL = window.location.href;
				addButton();
			}
		}
	}

	setTimeout(doubleCheck, 2000);
}

setTimeout(addButton, 1000);
document.addEventListener("click", checkURL);