All pastes #1033030 Raw Edit

Unnamed

public javascript v1 · immutable
#1033030 ·published 2008-05-29 12:22 UTC
rendered paste body
// ==UserScript==// @name           add_buffer.js// @namespace      http://example.org// @description    adds information about your current buffer and total download// @include        http://www.norbits.net/*// @include        http://norbits.net/*// @include        https://www.norbits.net/*// @include        https://norbits.net/*// ==/UserScript==(function () {       if (location.hostname.indexOf('norbits.net') == -1) {         return false;    }        //change this if you want your buffer to be relative to another ratio    // e.g. if you want your buffer to show how many GBs left untill you    // have a ratio of two point zero, set this to 2.0 :)     var     bufferIsRelativeTo = 2.50, // relative to 1.0 in ratio    showNegativeBuffers = false;       function getNodes(expression, startElement) {        startElement = startElement || document;        return document.evaluate(expression, startElement, null,                                  XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);    }    function trim(str) {        return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');    }    function getGigaBytes(text) {        var gigabytes, numbers, suffix;        text = trim(text);                if (text == 'Inf.' || text == '---') {             return 0;        }                var tmp = text.split(' ');        numbers  = Number(tmp[0]);        suffix   = tmp[1];        switch (suffix) {        case 'GB':            gigabytes =  numbers;            break;        case 'TB':            gigabytes = numbers * 1024;            break;        case 'MB':            gigabytes = numbers * 0.0009765625;            break;        //no point in doing calculations with that low numbers        case 'kB':        default:            gigabytes = 0;            break;        }                return gigabytes;    }        function start(e) {        try {            var activeTorrentsNode = getNodes('//font[text()="Akt:"]').snapshotItem(0);            if (!activeTorrentsNode) {                return;            }            var uploadNode = getNodes('//font[text()="Opp:"]').snapshotItem(0);            if (!uploadNode) {                return;            }            var uploaded = getGigaBytes(uploadNode.nextSibling.textContent);//always in GB                                  var downloadNode = getNodes('//font[text()="Ned:"]').snapshotItem(0);            if (!downloadNode) {                return;            }            var downloaded = getGigaBytes(downloadNode.nextSibling.textContent);//always in GB                       var container = document.createElement('span');                       var labelContainer = document.createElement('span');            labelContainer.title = 'Buffer i forhold til en ratio på ' + Number(bufferIsRelativeTo);                        labelContainer.style.color = 'purple';            labelContainer.appendChild(document.createTextNode('Buffer: '));            container.appendChild(labelContainer);                       if (!showNegativeBuffers && downloaded >= uploaded/bufferIsRelativeTo) {                container.appendChild(document.createTextNode('---'));            } else {                var buffer = (uploaded/bufferIsRelativeTo  - downloaded).toFixed(2);///always in GB, two decimals                container.appendChild(document.createTextNode(buffer + ' GB '));                       }            container.appendChild(document.createTextNode('  '));           //insert before activeTorrentsNode            activeTorrentsNode.parentNode.insertBefore(container, activeTorrentsNode);                        var totalContainer = document.createElement('span');                        var descContainer = document.createElement('span')            descContainer.style.color = 'blue';            descContainer.appendChild(document.createTextNode('Total: '));                                    totalContainer.appendChild(descContainer);            totalContainer.appendChild(document.createTextNode( (uploaded+downloaded).toFixed(2) + ' GB ' ))                        activeTorrentsNode.parentNode.insertBefore(totalContainer, activeTorrentsNode);                   } catch (ex) {             alert('feil: ' + ex);        }     }        if (window.opera) {        window.addEventListener('DOMContentLoaded', start, false);        } else {        window.addEventListener('load', start, false);    }    })();