osu! my download

ous beatmap download from mirror.osu beatmap镜像站下载。支持的镜像站点:bloodcat.com、osu.mengsky.net、inso.link、osu.uu.gl。

当前为 2017-07-16 提交的版本,查看 最新版本

// ==UserScript==
// @name           osu! my download
// @description    ous beatmap download from mirror.osu beatmap镜像站下载。支持的镜像站点:bloodcat.com、osu.mengsky.net、inso.link、osu.uu.gl。
// @author         dazzulay
// @copyright      2014+, dazzulay
// @version        2.1.0
// @icon           http://osu.ppy.sh/favicon.ico
// @include        http*://osu.ppy.sh/b/*
// @include        http*://osu.ppy.sh/s/*
// @include        http*://osu.ppy.sh/p/beatmap*
// @include        http*://osu.ppy.sh/beatmapsets/*
// @grant          none
// @namespace      https://gf.qytechs.cn/scripts/3916
// @homepageURL    https://gf.qytechs.cn/scripts/3916
// ==/UserScript==


var domain = document.domain;
var drive = domain.replace(/\./g, '_');
if (drive == 'osu_mengsky_net') {
    var bmid = getUrlParameter('bmid');
    if (bmid) {
        document.write('<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title></title></head><body></body></html>');
    }
}

function myJQueryCode() {
    function osu_my_downoad() {
        var self = this;
        this.mirros = {
            bloodcat: {
                url: 'http://bloodcat.com/osu/m/{bmid}',
                class: 'my_orange',
                text: 'DOWNLOAD BLOODCAT',
                target: '_blank'
            },
            /*
            2017-07-16 挂了
            mengsky: {
                url: 'http://osu.mengsky.net/?bmid={bmid}',
                url2: 'http://osu.mengsky.net/api/download/{bmid}', // 无法直接跳转,限制了
                class: 'my_green',
                text: 'DOWNLOAD MENGSKY',
                target: '_blank'
            },
            */
            insolink: {
                url: 'http://inso.link/?source=osu_my_download&m={bmid}',
                class: 'my_pink',
                text: 'DOWNLOAD INSO.LINK',
                target: '_blank'
            },
            osu_uu_gl: {
                url: 'http://osu.uu.gl/s/{bmid}',
                class: 'my_purpule',
                text: 'DOWNLOAD OSU.UU.GL',
                target: '_blank'
            }
        };
        this.mirros_parse = function (bmid, mirro, param) {
            var _param = 'url';
            if (param) {
                _param = param;
            }
            if (typeof self.mirros[mirro] !== "undefined") {
                self.mirros[mirro][_param] = str_render(self.mirros[mirro][_param], {bmid: bmid});
            } else {
                $.each(self.mirros, function (k, v) {
                    self.mirros[k][_param] = str_render(v[_param], {bmid: bmid});
                });
            }
        };
        this.drives = {
            osu_ppy_sh: function () {
                var is_new = $( '.osu-layout').length;

                if(is_new){
                    // css样式 设置
                    $('head').append('<style>.my_container .btn-osu-big__text-top{white-space: normal;}.my_container a:before{content:" ";position:absolute;left:0;right:0;top:0;bottom:0;border-radius:4px;}.my_orange:before{background-color:rgba(255,141,0,.5)}.my_green:before{background-color:rgba(0,101,0,.5)}.my_pink:before{background-color:rgba(255, 102, 170,.5)}.my_purpule:before{background-color:rgba(169, 10, 165,0.5);}</style>');

                    var beatmapset_page = '.js-react--beatmapset-page';

                    function ready(){
                        // 获取beatmapid
                        var bmsrc = $('.js-audio--play').attr('data-audio-url');
                        if(!bmsrc){
                            return false;
                        }
                        var bmid = bmsrc.substring(bmsrc.lastIndexOf("/") + 1, bmsrc.lastIndexOf("."));

                        // 设置url
                        self.mirros_parse(bmid);

                        // 添加按钮
                        var $container = $('<div class="beatmapset-header__buttons my_container"></div>');
                        var btn_tpl = '<a href="{url}" class="btn-osu-big btn-osu-big--beatmapset-header {class}"  target="{target}"><div class="btn-osu-big__content"><div class="btn-osu-big__left"><span class="btn-osu-big__text-top">{text}</span></div><div class="btn-osu-big__icon"><span class="fa fa-download"></span></div></div></a>';
                        $.each(self.mirros, function (k, v) {
                            $container.append(str_render(btn_tpl, self.mirros[k]));
                        });
                        $('.beatmapset-header__box--main').append($container);
                    }

                    // 第一次加载页面触发下面的load无效 用一个定时器
                    var _timer = setInterval(function(){
                        if($(beatmapset_page).attr('data-react-turbolinks-loaded')==1){
                            ready();
                            clearInterval(_timer);
                        }
                    },200);

                    $(document).on('turbolinks:load', ready);

                }else{
                    // css样式 设置
                    $('head').append('<style>.my_container{position:fixed;top:20px;right:0px;}.my_btn{text-align: center;width:150px;height:111px;display:table-cell;vertical-align:middle;margin:0 0 10px 0;padding:10px;font-family:Haettenschweiler,Impact,"Arial Grande",Tahoma,Helvetica,Arial,sans-serif;font-size:32px;font-weight:normal;color:#fff;border:4px solid #fff;border-radius:6px;}.my_btn:hover{text-shadow:0 0 20px floralwhite;color:#fff;}.my_orange{background:linear-gradient(to bottom,darkorange,orange,darkorange);}.my_blue{background:linear-gradient(to bottom,darkblue,blue,darkblue);}.my_green{background:linear-gradient(to bottom,darkgreen,green,darkgreen);}.my_pink{background:linear-gradient(to bottom,HotPink,pink,HotPink);}.my_purpule{background:linear-gradient(to bottom,#261326,#4B254B);}.my_btn span{display:inline-block;vertical-align:middle;text-align:center}</style>');

                    // 获取beatmapid
                    var bmsrc = $('.bmt').attr('src');
                    var bmid = bmsrc.substring(bmsrc.indexOf("thumb/") + 6, bmsrc.lastIndexOf("l"));

                    // 设置url
                    self.mirros_parse(bmid);

                    // 添加按钮
                    var $container = $('<div class="my_container"></div>');
                    var btn_tpl = '<a class="my_btn {class}" href="{url}" target="{target}"><span>{text}</span></a><br/>';
                    $.each(self.mirros, function (k, v) {
                        $container.append(str_render(btn_tpl, self.mirros[k]));
                    });
                    $('body').append($container);
                }
            },
            new_ppy_sh: function () {
            },
            osu_mengsky_net: function () {
                // 获取url参数的bmid
                var bmid = getUrlParameter('bmid');
                if (!bmid) {
                    return;
                }

                // css样式 设置
                $('head').append('<style>.my_container{position:fixed;top:20px;right:0px;}.my_btn{text-align: center;width:150px;height:111px;display:table-cell;vertical-align:middle;margin:0 0 10px 0;padding:10px;font-family:Haettenschweiler,Impact,"Arial Grande",Tahoma,Helvetica,Arial,sans-serif;font-size:32px;font-weight:normal;color:#fff;border:4px solid #fff;border-radius:6px;}.my_btn:hover{text-shadow:0 0 20px floralwhite;color:#fff;}.my_orange{background:linear-gradient(to bottom,darkorange,orange,darkorange);}.my_blue{background:linear-gradient(to bottom,darkblue,blue,darkblue);}.my_green{background:linear-gradient(to bottom,darkgreen,green,darkgreen);}.my_pink{background:linear-gradient(to bottom,HotPink,pink,HotPink);}.my_btn span{display:inline-block;vertical-align:middle;text-align:center}</style>');

                // 设置url
                self.mirros_parse(bmid, 'mengsky', 'url2');

                // 添加按钮
                var $container = $('<div class="my_container"></div>');
                var btn_tpl = '<a class="my_btn {class}" href="{url2}" target=""><span>{text}</span></a><br/>';
                $container.append(str_render(btn_tpl, self.mirros.mengsky));
                $('body').html($container);

                // 点击按钮
                $('a')[0].click();
            }
        };
        this.init = function () {
            var domain = document.domain;
            var drive = domain.replace(/\./g, '_');
            self.drives[drive]();
        };
        self.init();
    }
    osu_my_downoad();
}
if (typeof jQuery == 'undefined') {
    var headTag = document.getElementsByTagName("head")[0];
    var jqTag = document.createElement('script');
    jqTag.type = 'text/javascript';
    jqTag.src = '//code.jquery.com/jquery-1.8.3.min.js';
    jqTag.onload = myJQueryCode;
    headTag.appendChild(jqTag);
} else {
    myJQueryCode();
}

function str_render(template, context) {

    var tokenReg = /(\\)?\{([^\{\}\\]+)(\\)?\}/g;

    return template.replace(tokenReg, function (word, slash1, token, slash2) {
        if (slash1 || slash2) {
            return word.replace('\\', '');
        }

        var variables = token.replace(/\s/g, '').split('.');
        var currentObject = context;
        var i, length, variable;

        for (i = 0, length = variables.length; i < length; ++i) {
            variable = variables[i];
            currentObject = currentObject[variable];
            if (currentObject === undefined || currentObject === null) return '';
        }
        return currentObject;
    });
}

function getUrlParameter(sParam) {
    var sPageURL = decodeURIComponent(window.location.search.substring(1)),
        sURLVariables = sPageURL.split('&'),
        sParameterName,
        i;

    for (i = 0; i < sURLVariables.length; i++) {
        sParameterName = sURLVariables[i].split('=');

        if (sParameterName[0] === sParam) {
            return sParameterName[1] === undefined ? true : sParameterName[1];
        }
    }
}

QingJ © 2025

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