您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows the war end time in local time.
- // ==UserScript==
- // @name Show War Local Time
- // @namespace https://www.torn.com/profiles.php?XID=1936821
- // @version 1.6
- // @description Shows the war end time in local time.
- // @author TheFoxMan
- // @owner Phillip_J_Fry [2184575]
- // @license Apache License 2.0
- // @match https://www.torn.com/factions.php*
- // @run-at document-end
- // ==/UserScript==
- // Made for Phillip_J_Fry [2184575].
- // DO NOT EDIT.
- if (!Document.prototype.find)
- Object.defineProperties(Document.prototype, {
- find: {
- value(selector) {
- return document.querySelector(selector);
- },
- enumerable: false
- },
- findAll: {
- value(selector) {
- return document.querySelectorAll(selector);
- },
- enumerable: false
- }
- });
- if (!Element.prototype.find)
- Object.defineProperties(Element.prototype, {
- find: {
- value(selector) {
- return this.querySelector(selector);
- },
- enumerable: false
- },
- findAll: {
- value(selector) {
- return this.querySelectorAll(selector);
- },
- enumerable: false
- }
- });
- async function waitFor(sel, parent = document) {
- return new Promise((resolve) => {
- const intervalID = setInterval(() => {
- const el = parent.find(sel);
- if (el) {
- resolve(el);
- clearInterval(intervalID);
- }
- }, 500);
- });
- }
- (async () => {
- showWarTimes();
- window.addEventListener("hashchange", showWarTimes);
- })();
- async function showWarTimes() {
- if (window.location.hash.includes("tab=")) return;
- const warList = await waitFor("#faction_war_list_id");
- if (window.location.hash.includes("tab=")) return;
- document.findAll(".war-end-time").forEach((x) => x.remove());
- warList.findAll("[class*='warListItem__']").forEach((war) => {
- if (war.find(".timer")) {
- // Territory War
- const timer = war.find(".timer");
- const timeLeft = parseTime(timer.textContent);
- let date = Date.now();
- // date -= timeLeft;
- date += timeLeft;
- // date += 3 * 24 * 60 * 60 * 1000;
- date = (new Date(date)).toLocaleString()
- timer.insertAdjacentHTML("afterend", "<div class='war-end-time'>" + date + "</div>");
- return;
- }
- // RW
- if (!war.find("[data-warid]")) return;
- const bottomDiv = war.find("[class*='bottomBox__']");
- const timer = bottomDiv.find("[class*='timer__']");
- if (bottomDiv.textContent.includes("WINNER")) return;
- if (!parseTime(bottomDiv.textContent)) return;
- // console.log(Date.now() - parseTime(timer.textContent));
- const date = (new Date(Date.now() - parseTime(timer.textContent) + 123 * 60 * 60 * 1000)).toLocaleString();
- bottomDiv.insertAdjacentHTML(
- "beforeend",
- "<div class='war-end-time'>" + date + "</div>"
- );
- });
- }
- function parseTime(str) {
- const splits = str.split(":").map((x) => parseInt(x));
- // console.log(splits);
- let time = 0;
- time += splits[0] * 1000 * 60 * 60 * 24;
- time += splits[1] * 1000 * 60 * 60;
- time += splits[2] * 1000 * 60;
- time += splits[3] * 1000;
- return time;
- }