您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Show Advanced button stats
- // ==UserScript==
- // @name Advanced button stats
- // @namespace http://www.reddit.com/r/thebutton/ABS-pastymage
- // @version 0.5.17
- // @description Show Advanced button stats
- // @author pastymage (forked from /u/bwochinski 0.5)
- // @match *://www.reddit.com/r/thebutton/*
- // @grant none
- // ==/UserScript==
- //CONFIG
- var advInterval = 500; //update interval in milliseconds
- var advKeepAmt = 60; //history to keep (in seconds)
- //if you want it to automatically click, change -1 in the
- // line below to the time (remaining) that you want
- var timeyouwant = -1
- //Important variables
- var parHist = [];
- var histLen = (1000 / advInterval) * advKeepAmt;
- var lowestTime = 60.00;
- var clicked = false;
- if ( !document.getElementsByClassName ) {
- document.getElementsByClassName = function(cl, tag) {
- var els, matches = [],
- i = 0, len,
- regex = new RegExp('(?:\\s|^)' + cl + '(?:\\s|$)');
- // If no tag name is specified,
- // we have to grab EVERY element from the DOM
- els = document.getElementsByTagName(tag || "*");
- if ( !els[0] ) return false;
- for ( len = els.length; i < len; i++ ) {
- if ( els[i].className.match(regex) ) {
- matches.push( els[i]);
- }
- }
- return matches; // an array of elements that have the desired classname
- };
- }
- // Very simple implementation. We're only checking for an id, class, or tag name.
- // Does not accept CSS selectors in pre-querySelector browsers.
- function qq(el, tag) {
- var firstChar = el.charAt(0);
- switch ( firstChar ) {
- case "#":
- return document.getElementById( el.slice(1) );
- case ".":
- var res = document.getElementsByClassName( el.slice(1));
- return res;
- default:
- return document.getElementsByTagName(tag);
- }
- };
- function qqf(el, tag) {
- var res = qq(el,tag);
- return res[0];
- }
- function setupABSDisplay() {
- var div;
- var tmp;
- const LEFTSTYLE = "style='Font: 18px Verdana normal black; width: 100%; float: left;'"
- // const LEFTSTYLE = "style='Font: 18px Verdana normal black; width: 400px; float: left;''"
- const RIGHTSTYLE = "style='Font: 18px Verdana normal black; width: 90px; float: left;'"
- div=document.createElement('div');
- div.id='advButtonStats'
- div.style='position: absolute; bottom: 0; margin-top: 100px; margin: 0 auto; width: 480px;'
- qqf(".thebutton-form").appendChild(div);
- tmp=document.createElement('div');
- tmp.innerHTML = "<div id='advSPACER' " + LEFTSTYLE + "><br></div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- tmp.innerHTML = "<div id='advBOPS' " + RIGHTSTYLE + ">BOPS:</div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- tmp.innerHTML = "<div id='advLowest' " + RIGHTSTYLE + ">Lowest Seen:</div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- tmp.innerHTML = "<div id='advPPM' " + RIGHTSTYLE + ">Clicks/min:</div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- tmp.innerHTML = "<div id='advFlair' " + RIGHTSTYLE + ">Current Flair:</div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- tmp.innerHTML = "<div id='advSPC' " + RIGHTSTYLE + ">Avg Secs/Click:</div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- if (timeyouwant != -1) {
- tmp.innerHTML = "<div id='advCamp' " + RIGHTSTYLE + "><b>Auto Click:</b> " + timeyouwant.toString() + "</div>";
- qq("#advButtonStats").appendChild(tmp.firstChild);
- }
- }
- function advStatUpdate() {
- if (parHist.length > histLen) {
- parHist.pop();
- }
- var advText = qqf(".thebutton-participants").textContent.replace(",","");
- parHist.unshift(parseInt(advText));
- //console.log(parHist);
- var curBOPS = (parHist[0] - parHist[parHist.length - 1]) / (parHist.length / (1000 / advInterval));
- var curPPM = (parHist[0] - parHist[parHist.length - 1]) * (60 / advKeepAmt) * (advKeepAmt / (parHist.length / (1000 / advInterval)));
- var curTime = parseFloat(qq("#thebutton-s-10s").textContent + qq("#thebutton-s-1s").textContent + "." + qq("#thebutton-s-100ms").textContent + qq("#thebutton-s-10ms").textContent);
- if (!clicked) {
- if (curTime < lowestTime) {
- lowestTime = curTime;
- document.title=curTime.toString();
- } else {
- document.title="the button";
- }
- }
- if (!clicked && (curTime < timeyouwant + 1) && (curtime >= timeyouwant)) {
- document.title = "Done!"
- qq("#thebutton").click();
- clicked=true;
- }
- qq("#advBOPS").innerHTML = "<b>BOPS:</b> " + curBOPS.toFixed(5);
- qq("#advPPM").innerHTML = "<b>Clicks/min:</b> " + Math.round(curPPM);
- qq("#advFlair").innerHTML = "<b>Current Flair:</b> <span class='flair flair-press-" + String(curTime + 9).substring(0,1) + "'>" + String(curTime).substring(0,2) + "s</span>";
- qq("#advLowest").innerHTML = "<b>Lowest Seen:</b> " + lowestTime + "s</span>";
- qq("#advSPC").innerHTML = "<b>Avg Secs/Click:</b> " + (1 / curBOPS.toFixed(5)).toFixed(2);
- }
- function main() {
- setupABSDisplay();
- advStatUpdate();
- setInterval(advStatUpdate, advInterval);
- }
- main();