omdbButtonAdder

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

当前为 2023-01-18 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         omdbButtonAdder
// @namespace    omdbButtonAdder
// @version      1.04
// @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("#") && !currentURL.includes("#taiko") && !currentURL.includes("#fruits") && !currentURL.includes("#mania")) {
    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("#") && !window.location.href.includes("#taiko") && !window.location.href.includes("#fruits") && !window.location.href.includes("#mania");
        var previousURLIsBeatmap = currentURL.includes("beatmapsets") && currentURL.includes("#") && !currentURL.includes("#taiko") && !currentURL.includes("#fruits") && !currentURL.includes("#mania");

        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);