Adds extra information to different pages all around Torn.
当前为
// ==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.3
// @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">Jeggy Script</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 load(){
data = {
apikey: 'eQ2BlOZ6',
settings: {online: false},
userid: 1526723,
1526723: {color: '#33cc00', notes: 'Some extra notes', difficulty: 'hard'}
};
}
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) {
setUserValue(userid, 'stats', data.personalstats);
setUserValue(userid, 'lastRequest', now.getTime());
setUserValue(userid, 'username', data.name);
cb(data);
}
});
}else{
cb(data[userid].stats);
}
}
function compareTemplate(user1Id, user2Id){
console.log('user1: '+user1Id + ', user2: '+user2Id);
console.log(data[user1Id].stats);
console.log(data[user2Id].stats);
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, " "));
}