FreeFaucet Soundman AutoROLL Bot

AutoRoll Script for FreeCardano.com-freebitcoin.io-freenem.com-coinfaucet.io-freesteam.io-freetether.com-freeusdcoin.com-freebinancecoin.com-freeethereum.com-free-tron.com-freedash.io-freechainlink.io-freeneo.io-free-ltc.com-free-doge.com

// ==UserScript==
// @name         FreeFaucet Soundman AutoROLL Bot
// @namespace    https://greasyfork.org/en/users/689247-soundman
// @version      0.8
// @description  AutoRoll Script for FreeCardano.com-freebitcoin.io-freenem.com-coinfaucet.io-freesteam.io-freetether.com-freeusdcoin.com-freebinancecoin.com-freeethereum.com-free-tron.com-freedash.io-freechainlink.io-freeneo.io-free-ltc.com-free-doge.com
// @author       Soundman
// @match        https://freecardano.com/free
// @match        https://freebitcoin.io/free
// @match        https://freenem.com/free
// @match        https://coinfaucet.io/free
// @match        https://freesteam.io/free
// @match        https://freetether.com/free
// @match        https://freeusdcoin.com/free
// @match        https://freebinancecoin.com/free
// @match        https://freeethereum.com/free
// @match        https://free-tron.com/free
// @match        https://freedash.io/free
// @match        https://freechainlink.io/free
// @match        https://freeneo.io/free
// @match        https://free-ltc.com/free
// @match        https://free-doge.com/free
// @grant        none
// @create       2021-01-07
// @note         2021-01-20-Ver. 0.7 Added info on InfoPanel
// @note         2021-01-18-Ver. 0.6 Bugfix
// @note         2021-01-18-Ver. 0.5 Added info panel and cookies
// @run-at       document-end
// ==/UserScript==

var LOG_LEVEL=1;
var script_version = GM_info.script.version;
var currency="";
var total_executions = getCookie("executions");
var winning = getCookie("winning");
var last_win = getCookie("last_win");

if (! (total_executions > 0)) total_executions = 0;
if (! (winning > 0)) winning = 0;
if (! (last_win > 0)) last_win = 0;

// CONFIG //
var UPDATE_TITLE = true; //Show time remaining for next roll in the browser tab

// END CONFIG //

var title;

(function() {
    'use strict';

    var minuti;
    var secondi;
    var t;
    title=document.title;

    console.log("%c[Debug] GetCurrency", 'color: grey');
    currency=getCurrency();


        // wait 5 seconds to get the page loaded. Needed by some single board computer
        setTimeout(function() {
            t=missingTime();
            InfoPanel();
        },5000)

        //Now wait 10 seconds to get the missing time loaded.
        setTimeout(function() {
            if (t[0]==0 && t[1]==0){
                //time is past calling roll with random time from 1 to 10 seconds
                var rnd=random(1000,10000);
                console.log("%c[Debug] Calling Roll with rnd: "+rnd, 'color: grey');
                setTimeout(function() {Roll();},rnd)
            } else{
                //time is not past, reload the page at the end of timer
                var tt=0;
                tt=t[0]*60*1000;
                tt=tt+(t[1]*1000)+3000;

                console.log("%c[Debug] Calling reload with rnd: "+tt, 'color: grey');

                setTimeout(function() {
                    reload();
                }, tt);

                if (UPDATE_TITLE){
                    setInterval(function(){
                        var tt=missingTime();
                        document.title=tt[0] + "m:" + tt[1] + "s " + title;
                    }, 1000);
                }

            }
        },10000)


 })();


function InfoPanel(){
    var Panel='';
    var CSS='';
    CSS = '<style> #script_output {background: rgb(0, 47, 47); border: 2px groove #09ff00; margin-bottom: 1em;} ';
    CSS += '#script_output .script_output {color: white; font-weight:normal; font-size: 1em} ';
//     CSS += '#script_output_title_msg {font-size: 1em; color: orange; text-align: right; position:absolute; left:0; top:0.5em;} ';
    CSS += '#script_output_title_msg {font-size: 1em; color: white; text-align: left;} ';
    CSS += '#script_output_title_msg span {line-height:1.5em;} ';
    CSS += '#script_output_title_msg_num {font-size: 1em; color: rgb(0,255,127); text-align: left;} ';
    CSS += 'a {text-decoration:none;} ';
    CSS += '</style>';

    Panel = '<div class="center free_play_bonus_box_large" id="script_output">';
    Panel += '<div style="position:relative; width: 100%"><p id="script_output_title" style="color: rgb(0,255,127); font-weight:bold; text-align: center;">FreeFaucet AutoROLL v.'+script_version+'</p>';
    Panel += '<div id="script_output_title_msg">';
    Panel += '<span id="script_output_title_msg_executions" style="color:white;">Executions: <span id="script_output_title_msg_num" class="true bold">'+total_executions+'</span></span><br>';
    Panel += '<span id="script_output_title_msg_Currency" style="color:white;">Currency: <span id="script_output_title_msg_num" class="true bold">'+currency+'</span></span><br>';
    Panel += '<span id="script_output_title_msg_Win" style="color:white;">Script Total Win: <span id="script_output_title_msg_num" class="true bold">'+winning+'</span></span><br>';
    Panel += '<span id="script_output_title_msg_LastWin" style="color:white;">Script Last Win: <span id="script_output_title_msg_num" class="true bold">'+last_win+'</span></span><br>';

    Panel += '</div></div>';
    Panel += '<p class="script_output" id="script_output_msg_1"></p>';
    Panel += '<p class="script_output" id="script_output_msg_2"></p>';
    Panel += '<p class="script_output" id="script_output_msg_3" style="color:grey; font-size:0.8em; line-height:0.8em; font-family: console; ">Script Home Page: <a href="https://greasyfork.org/it/scripts/419810-freefaucet-autoroll" target="_blank">Home Page</a></p>';
    Panel += '<p class="script_output" id="script_output_msg_4" style="color:grey; font-size:1em; line-height:1em; font-family: console; "> This Script also work with <a href="https://free-doge.com/?ref=32013" target="_blank">free-doge.com</a> - <a href="https://freecardano.com/?ref=263024" target="_blank">freecardano.com</a> - <a href="https://freebitcoin.io/?ref=339159" target="_blank">freebitcoin.io</a> - <a href="https://freenem.com/?ref=261095" target="_blank">freenem.com</a> - <a href="https://coinfaucet.io/?ref=694525" target="_blank">coinfaucet.io</a> - <a href="https://freesteam.io/?ref=90790" target="_blank">freesteam.io</a> - <a href="https://freetether.com/?ref=130741" target="_blank">freetether.com</a> - <a href="https://freeusdcoin.com/?ref=69982" target="_blank">freeusdcoin.com</a> - <a href="https://freebinancecoin.com/?ref=88852" target="_blank">freebinancecoin.com</a> - <a href="https://freeethereum.com/?ref=62968" target="_blank">freeethereum.com</a> - <a href="https://free-tron.com/?ref=128556" target="_blank">free-tron.com</a> - <a href="https://freedash.io/?ref=51080" target="_blank">freedash.io</a> - <a href="https://freechainlink.io/?ref=44985" target="_blank">freechainlink.io</a> - <a href="https://freeneo.io/?ref=" target=36724"_blank">freeneo.io</a> - <a href="https://free-ltc.com/?ref=19932" target="_blank">free-ltc.com</a></p>';
    Panel += '<p class="script_output" id="script_output_msg_4" style="color:grey; font-size:0.8em; line-height:0.8em; font-family: console; "> Donations are welcome, BTC addr: 3G5p78zeNaMKPndTfgXGW9swu5JcFqLMgQ - ©️ soundman 2021</p>';
    Panel += '</div> ';

    var ss=document.createElement('div');
    ss.innerHTML=CSS+Panel;
    //console.log(ss.innerHTML);
    document.getElementsByClassName("free")[0].prepend(ss);
}

function getCurrency(){
    return document.getElementsByClassName("navbar-coins bg-1")[0].innerText.split(" ")[1];
}

function getResult(){
    console.log("%c[Debug] getResult!!", 'color: grey');
    var a= document.getElementsByClassName("result")[0].innerText.split(" ")[3];
    console.log("%c[Debug] result: " + a, 'color: grey');
    last_win = parseFloat(a);
    winning =parseFloat(winning) + parseFloat(last_win);
    setCookie('winning', winning.toFixed(8), 7);
    setCookie('last_win', last_win.toFixed(8), 7);
}

function random(min,max){
   return min + (max - min) * Math.random();
}

function reload(){
    location.reload();
}

function Roll(){
    console.log("%c[Debug] ROLL!!", 'color: grey');
    if (document.getElementsByClassName("main-button-2 roll-button bg-2")[0].parentElement.style.display!="none"){
        document.getElementsByClassName("main-button-2 roll-button bg-2")[0].click()
        total_executions++;
        setCookie('executions', total_executions, 7);
    }

    setTimeout(function(){ getResult(); }, 8000);

    var rnd=random(10000,20000);
        setTimeout(function(){ location.reload(); }, rnd);
        console.log("%c[Debug] Reload in " + rnd , 'color: grey');
}

function missingTime () {
    var minuti="";
    minuti=document.getElementsByClassName("timeout-container")[0].getElementsByClassName("minutes")[0].getElementsByClassName("digits")[0].innerText
    var secondi="";
    secondi=document.getElementsByClassName("timeout-container")[0].getElementsByClassName("seconds")[0].getElementsByClassName("digits")[0].innerText
    if (LOG_LEVEL==0) console.log("%c[Debug] [missingTime]: "+minuti +":"+secondi , 'color: grey');
    //console.log("%c[Debug] [missingTime] string secondi: "+secondi, 'color: grey');
    if (minuti != "" && secondi!="" ){
        return [minuti,secondi];
    }
    else{return [0,0];}
}

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  console.log("%c[Debug] [setCookie]: "+cname +":"+cvalue , 'color: grey');
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}