Torn Helper

Adds extra information to different pages all around Torn.

目前为 2016-12-22 提交的版本。查看 最新版本

// ==UserScript==
// @name        Torn Helper
// @namespace   Jebster.Torn
// @author      Jeggy
// @description Adds extra information to different pages all around Torn.
// @include     *.torn.com/profiles.php?XID=*
// @version     0.0.7
// @require     http://code.jquery.com/jquery-2.2.4.min.js
// @grant       GM_addStyle
// ==/UserScript==


var data = {};

(function() {
    'use strict';

    var site = window.location.pathname;

    load();

    if(site.indexOf('profiles.php') > 0) profileView();

})();

function profileView(){
    var userid = getParameterByName('XID');
    var userData = data[userid];
    var content =
        '<div id="compareStats">' +
        'Loading...' +
        '<br />' +
        '</div>' +
        '<hr />' +
        '<b>Notes</b><br />' +
        getUserValue(userid, 'notes')+
        '';

    var compareFunc = function(){$('#compareStats').replaceWith(compareTemplate(userid, data.userid));};
    apiUserStats(userid, compareFunc);
    apiUserStats(data.userid, compareFunc);

    var block = $(
        '<div class="profile-wrapper medals-wrapper m-top10">' +
        '<div class="menu-header">Torn Helper</div>' +
        '<div class="profile-container"> ' +
        '<div class="profile-container-description">'+content+'</div>' +
        '</div>' +
        '<div class="clear"></div></div>');

    $(block).insertAfter('.tutorial-cont + .profile-wrapper');
}

function getUserValue(userid, property){
    var user = data[userid];
    if(user){
        if($.isArray(property)){
            for(var i = 0; i < property.length; i++){
                user = user[property[i]];
            }
            return user;
        }else{
            var userData = user[property];
            if(userData){
                return userData;
            }
        }
    }
    return -1;
}

function setUserValue(userid, property, value){
    if(data[userid] === undefined) data[userid] = {};
    data[userid][property] = value;
}

function save(){
    localStorage.setItem('data', JSON.stringify(data));
}

function load(){
    data = localStorage.getItem('data');
    if(data === undefined || data === null){
        data = {};
    }else{
        data = JSON.parse(data);
    }

    if(data.apikey === undefined || data.apikey === ''){
        getApiKey();
    }
}

function getApiKey(){
    var key = prompt('You API Key', 'key');
    data.apikey = key;
    save();
}

function apiUserStats(userid, cb){
    var lastRequest = getUserValue(userid, 'lastRequest');
    var now = new Date();
    if(lastRequest === 0 || lastRequest < now.getTime() - (60*60*5)){ // TODO:
        var selections = 'personalstats,basic';
        var url = 'https://api.torn.com/user/'+userid+'?selections='+selections+'&key='+data.apikey;
        $.ajax({
            url: url,
            type: 'GET',
            success: function(data) {
                if(data.error) getApiKey();
                else{
                    setUserValue(userid, 'stats', data.personalstats);
                    setUserValue(userid, 'lastRequest', now.getTime());
                    setUserValue(userid, 'username', data.name);
                    save();
                    cb(data);
                }
            }
        });
    }else{
        cb(data[userid].stats);
    }
}

function compareTemplate(user1Id, user2Id){
    return '<ul class="basic-list">' +
        '<li>' +
        '<div class="user-information-section left"><span class="bold"></span></div>' +
        '<div class="user-information-section left"><span class="bold">'+getUserValue(user1Id, 'username')+'</span></div>' +
        '<div><span class="bold">'+getUserValue(user2Id, 'username')+' (You)</span></div>' +
        '</li>' +

        '<li>'+
        '<div class="user-information-section left"><span class="bold">Xanax taken</span></div>' +
        '<div class="user-information-section left">'+getUserValue(user1Id, ['stats', 'xantaken'])+'</div>' +
        '<div>'+getUserValue(user2Id, ['stats', 'xantaken'])+'</div>' +
        '</li>' +

        '<li>'+
        '<div class="user-information-section left"><span class="bold">Logins</span></div>' +
        '<div class="user-information-section left">'+getUserValue(user1Id, ['stats', 'logins'])+'</div>' +
        '<div>'+getUserValue(user2Id, ['stats', 'logins'])+'</div>' +
        '</li>' +
        '</ul>';
}

// Taken from: http://stackoverflow.com/a/15724300/1832471
function getCookieValue(name) {
    var value = "; " + document.cookie;
    var parts = value.split("; " + name + "=");
    if (parts.length == 2) return parts.pop().split(";").shift();
}

// Taken from: http://stackoverflow.com/a/901144/1832471
function getParameterByName(name, url) {
    if (!url) {
        url = window.location.href;
    }
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

QingJ © 2025

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