Patreon Pledge Predictor

Calculates the new patreon pledge amount

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name Patreon Pledge Predictor
// @description Calculates the new patreon pledge amount
// @author compujosh
// @version 1.02
// @namespace compujosh
// @match https://www.patreon.com/bePatron?c=*&rid=*
// @match https://www.patreon.com/join/*
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
// @grant none
// ==/UserScript==

function roundToTwo(num) {
    return Math.round(parseFloat(num)*100)/100;
}

function calcPledge(pledgeAmnt, worksNum) {
    var precisionAmnt = (Math.floor(Math.log10(pledgeAmnt))+1) + 4; // Num whole digits + 4

    var formula = worksNum * roundToTwo((pledgeAmnt + (pledgeAmnt * 0.029) + 0.35).toPrecision(precisionAmnt));
    return formula.toFixed(2);
}

function updatePrediction() {
    // React app, so make sure we have the right page
    if ((/https?:\/\/www.patreon.com\/join\/.*\/checkout/).test(document.baseURI)) {
        // Monthly confirmation page

        // Check max per month is enabled
        if ($('.react-numeric-input').length === 0) {
            // Remove calculation if N/A
            $('#realPledgeAmnt').html("");
            return;
        }

        // Put est container back in
        if ($('#realPledgeAmnt').length === 0) $('.react-numeric-input').parent().parent().parent().parent().parent().after('<div id="realPledgeAmnt" style="color:gray;font-size:95%;"></div>');

        var pledgeAmnt = parseFloat($('span.mr-sm span')[0].innerHTML.split("+")[0].replace("$",""));
        var monthlyMax = parseFloat($("input.form-control").prop("value"));
        $('#realPledgeAmnt').html("Total: $"+calcPledge(pledgeAmnt,monthlyMax));
    }
    else if ((/^https?:\/\/www.patreon.com\/bePatron\?c=[0-9]*&rid=[0-9]*/).test(document.baseURI)) {
        // Put est container back in after changing reward tier
        if ($('#realPledgeAmnt').length === 0) $('.react-numeric-input').after('<div id="realPledgeAmnt" style="color:gray;font-size:95%;"></div>');

        var pledgeAmnt = parseFloat($("input.form-control").prop("value"));
        $('#realPledgeAmnt').html("$"+calcPledge(pledgeAmnt,1));
    }
    else {
        // Wrong page
    }
}


//setInterval(updatePrediction, 250);