Library of functions used in my Torn scripts.
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/510149/1480318/Torn%3A%20Scripts%20library.js
// ==UserScript==
// @name Torn: Scripts library
// @namespace lugburz.lib
// @version 0.1.5
// @description Library of functions used in my Torn scripts.
// @author Lugburz
// @exclude *
// @grant none
// ==/UserScript==
function ajax(callback) {
$(document).ajaxComplete((event, xhr, settings) => {
if (xhr.readyState > 3 && xhr.status == 200) {
let url = settings.url;
if (url.indexOf("torn.com/") < 0) url = "torn.com" + (url.startsWith("/") ? "" : "/") + url;
const page = url.substring(url.indexOf("torn.com/") + "torn.com/".length, url.indexOf(".php"));
callback(page, xhr, settings);
}
});
}
function pad(num, size) {
return ('000000000' + num).substr(-size);
}
function formatTime(date) {
return pad(date.getUTCHours(), 2) + ':' + pad(date.getUTCMinutes(), 2) + ':' + pad(date.getUTCSeconds(), 2);
}
function formatTimeMsec(msec, alwaysShowHours = false) {
const hours = Math.floor((msec % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((msec % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((msec % (1000 * 60)) / 1000);
const mseconds = Math.floor(msec % 1000);
return (alwaysShowHours ? pad(hours, 2) + ":" : (hours > 0 ? hours + ":" : '')) + (hours > 0 || minutes > 0 ? pad(minutes, 2) + ":" : '') + pad(seconds, 2) + "." + pad(mseconds, 3);
}
function formatTimeSecWithLetters(msec) {
const hours = Math.floor((msec % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((msec % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((msec % (1000 * 60)) / 1000);
return (hours > 0 ? hours + "h " : '') + (hours > 0 || minutes > 0 ? minutes + "min " : '') + seconds + "s";
}
function decode64(input) {
var output = '';
var chr1, chr2, chr3 = '';
var enc1, enc2, enc3, enc4 = '';
var i = 0;
var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var base64test = /[^A-Za-z0-9\+\/\=]/g;
if (base64test.exec(input)) {
console.log('There were invalid base64 characters in the input text.\n' +
'Valid base64 characters are A-Z, a-z, 0-9, \'+\', \'/\',and \'=\'\n' +
'Expect errors in decoding.');
}
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
chr1 = chr2 = chr3 = '';
enc1 = enc2 = enc3 = enc4 = '';
} while (i < input.length);
return unescape(output);
}