您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays the changes in stats on PTH
当前为
// ==UserScript== // @name PTH stats since last // @version 0.2 // @description Displays the changes in stats on PTH // @author Chameleon // @include http*://*passtheheadphones.me/* // @grant none // @namespace https://greasyfork.org/users/87476 // ==/UserScript== (function() { 'use strict'; if(window.location.href.indexOf("threadid=1781") != -1) showSettings(); var currentStats = {}; var statspans = document.getElementById('userinfo_stats').getElementsByTagName('span'); currentStats.up = parseStats(statspans[0].textContent); currentStats.down = parseStats(statspans[1].textContent); currentStats.ratio = parseFloat(statspans[2].textContent); if(isNaN(currentStats.ratio)) currentStats.ratio = 0; var oldStats = window.localStorage.lastStats; if(!oldStats) oldStats = {up:currentStats.up, down:currentStats.down, ratio:currentStats.ratio}; else oldStats = JSON.parse(oldStats); window.localStorage.lastStats = JSON.stringify(currentStats); var settings = getSettings(); var change = {up:currentStats.up-oldStats.up, down:currentStats.down-oldStats.down, ratio:Math.round((currentStats.ratio-oldStats.ratio)*100)/100}; if(settings.profileOnly && window.location.href.indexOf(document.getElementById('nav_userinfo').getElementsByTagName('a')[0].href) == -1) return; if(change.up != 0 || settings.noChange) statspans[0].innerHTML += ' ('+renderStats(change.up)+')'; if(change.down != 0 || settings.noChange) statspans[1].innerHTML += ' ('+renderStats(change.down)+')'; if(change.ratio != 0 || settings.noChange) statspans[2].innerHTML += ' ('+change.ratio+')'; if(settings.alert && (change.up != 0 || change.down != 0 || change.ratio != 0)) alert('Up: '+renderStats(change.up)+', Down: '+renderStats(change.down)+', Ratio: '+change.ratio); })(); function showSettings() { var before = document.getElementsByClassName('forum_post')[0]; var div = document.createElement('div'); before.parentNode.insertBefore(div, before); div.setAttribute('style', 'width: 100%; text-align: center; padding-bottom: 10px;'); div.setAttribute('class', 'box'); div.innerHTML = '<h2>PTH stats since last Settings</h2><br />'; var settings = getSettings(); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Show on no change: '+(settings.noChange ? 'On' : 'Off'); a.addEventListener('click', changeSetting.bind(undefined, a), false); div.appendChild(a); div.appendChild(document.createElement('br')); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Show on profile only: '+(settings.profileOnly ? 'On' : 'Off'); a.addEventListener('click', changeSetting.bind(undefined, a), false); div.appendChild(a); div.appendChild(document.createElement('br')); var a=document.createElement('a'); a.href='javascript:void(0);'; a.innerHTML = 'Alert on change: '+(settings.alert ? 'On' : 'Off'); a.addEventListener('click', changeSetting.bind(undefined, a), false); div.appendChild(a); div.appendChild(document.createElement('br')); } function changeSetting(a) { var on=false; if(a.innerHTML.indexOf('On') == -1) { on=true; a.innerHTML = a.innerHTML.replace('Off', 'On'); } else { a.innerHTML = a.innerHTML.replace('On', 'Off'); } var settings = getSettings(); if(a.innerHTML.indexOf('no change') != -1) { settings.noChange = on; } else if(a.innerHTML.indexOf('profile only') != -1) { settings.profileOnly = on; } else if(a.innerHTML.indexOf('Alert') != -1) { settings.alert = on; } window.localStorage.lastStatsSettings = JSON.stringify(settings); } function getSettings() { var settings = window.localStorage.lastStatsSettings; if(!settings) { settings = {noChange: false, profileOnly: false, alert: false}; } else settings = JSON.parse(settings); return settings; } function renderStats(number) { var amount = number; var pow = 0; for(var i=10; i<=50; i=i+10) { if(Math.abs(amount)/Math.pow(2, i) > 1) pow=i/10; } var suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']; return (Math.round(amount/Math.pow(2, pow*10)*100))/100+' '+suffixes[pow]; } function parseStats(string) { var amount = parseFloat(string); if(string.indexOf('KB') != -1) amount = amount*Math.pow(2, 10); else if(string.indexOf('MB') != -1) amount = amount*Math.pow(2, 20); else if(string.indexOf('GB') != -1) amount = amount*Math.pow(2, 30); else if(string.indexOf('TB') != -1) amount = amount*Math.pow(2, 40); else if(string.indexOf('PB') != -1) amount = amount*Math.pow(2, 50); return Math.round(amount); }