Patreon Pledge Predictor

Calculates the new patreon pledge amount

  1. // ==UserScript==
  2. // @name Patreon Pledge Predictor
  3. // @description Calculates the new patreon pledge amount
  4. // @author compujosh
  5. // @version 1.02
  6. // @namespace compujosh
  7. // @match https://www.patreon.com/bePatron?c=*&rid=*
  8. // @match https://www.patreon.com/join/*
  9. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. function roundToTwo(num) {
  14. return Math.round(parseFloat(num)*100)/100;
  15. }
  16.  
  17. function calcPledge(pledgeAmnt, worksNum) {
  18. var precisionAmnt = (Math.floor(Math.log10(pledgeAmnt))+1) + 4; // Num whole digits + 4
  19.  
  20. var formula = worksNum * roundToTwo((pledgeAmnt + (pledgeAmnt * 0.029) + 0.35).toPrecision(precisionAmnt));
  21. return formula.toFixed(2);
  22. }
  23.  
  24. function updatePrediction() {
  25. // React app, so make sure we have the right page
  26. if ((/https?:\/\/www.patreon.com\/join\/.*\/checkout/).test(document.baseURI)) {
  27. // Monthly confirmation page
  28.  
  29. // Check max per month is enabled
  30. if ($('.react-numeric-input').length === 0) {
  31. // Remove calculation if N/A
  32. $('#realPledgeAmnt').html("");
  33. return;
  34. }
  35.  
  36. // Put est container back in
  37. if ($('#realPledgeAmnt').length === 0) $('.react-numeric-input').parent().parent().parent().parent().parent().after('<div id="realPledgeAmnt" style="color:gray;font-size:95%;"></div>');
  38.  
  39. var pledgeAmnt = parseFloat($('span.mr-sm span')[0].innerHTML.split("+")[0].replace("$",""));
  40. var monthlyMax = parseFloat($("input.form-control").prop("value"));
  41. $('#realPledgeAmnt').html("Total: $"+calcPledge(pledgeAmnt,monthlyMax));
  42. }
  43. else if ((/^https?:\/\/www.patreon.com\/bePatron\?c=[0-9]*&rid=[0-9]*/).test(document.baseURI)) {
  44. // Put est container back in after changing reward tier
  45. if ($('#realPledgeAmnt').length === 0) $('.react-numeric-input').after('<div id="realPledgeAmnt" style="color:gray;font-size:95%;"></div>');
  46.  
  47. var pledgeAmnt = parseFloat($("input.form-control").prop("value"));
  48. $('#realPledgeAmnt').html("$"+calcPledge(pledgeAmnt,1));
  49. }
  50. else {
  51. // Wrong page
  52. }
  53. }
  54.  
  55.  
  56. //setInterval(updatePrediction, 250);
  57.  

QingJ © 2025

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