Nexus No Wait

Download from Nexusmods.com without wait and redirect (support Manual/Vortex)

目前為 2020-01-30 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Nexus No Wait
// @description Download from Nexusmods.com without wait and redirect (support Manual/Vortex)
// @namespace   NexusNoWait
// @include     https://www.nexusmods.com/*/mods/*
// @run-at      document-idle
// @version     1.4
// @require			http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// ==/UserScript==


$(document).on('click', '.btn', function(event) {

    var href = $(this).attr('href');
    if (~href.indexOf("file_id")) {
        event.preventDefault();
        var button = $(this);

        button.css("color", "yellow");
        button.text('WAIT');

        var game_id = document.getElementById("section").dataset.gameId;
        var search_params = new URLSearchParams(href);
        var file_id = search_params.get("file_id");

        if (!~href.indexOf("nmm")) {
            $.ajax({
                type: "POST",
                url: "/Core/Libs/Common/Managers/Downloads?GenerateDownloadUrl",
                data: {
                    fid: file_id,
                    game_id: game_id,
                },
                success: function(data) {
                    if (data && data.url) {
                        console.log('Success');
                        window.location.href = data.url;
                        btnSuccess(button);
                    } else {
                        btnError(button);
                    }
                },
                error: function() {
                    btnError(button);
                }
            });
        } else {
            $.ajax({
                type: "GET",
                url: href,
                success: function(data) {
                    var slow = $(data).find('#slowDownloadButton');
                    var downloadUrl = slow.data('download-url');
                    document.location.href = downloadUrl;
                    btnSuccess(button);
                },
                error: function(ajaxContext) {
                    console.log(ajaxContext.responseText);
                    btnError(button);
                }
            });
        }
        var popup = $(this).parent();
        if (popup.hasClass('popup')) {
            popup.children("button").click();
        }
    }
});

function btnError(button) {
    button.css("color", "red");
    button.text('ERROR');
}

function btnSuccess(button) {
    button.css("color", "green");
    button.text('LOADING');
}