OTtaruih
// ==UserScript== // @name OverTimee // @version 0.2 // @description OTtaruih // @author You // @match https://www.erepublik.com/en/economy/myCompanies // @icon https://www.google.com/s2/favicons?sz=64&domain=erepublik.com // @grant none // @namespace https://greasyfork.org/users/1144622 // ==/UserScript== (function() { 'use strict'; const _token = csrfToken; const interval = 3615000; async function mainFunction() { const captcha = checkSessionValidationExists(); const next = checkLocalStorage(); const now = getCurrentUnixTimestamp(); if (!captcha) { if (next < now) { const job = await fetchData(`https://www.erepublik.com/en/main/job-data`); if (job) { const worked = job.alreadyWorked; const nextOT = job.overTime.nextOverTime; const payload = payloadOT(); await delay(5000); await OT(payload); if (next < nextOT) { editLocalStorage(nextOT); } console.log(worked); console.log(nextOT); const time = msToHMS(nextOT); const newT = getCurrentUnixTimestamp(); const delayT = (nextOT - newT + 2) * 1000; console.log(time); await delay(delayT); redirectToErepublik(); } } } } //end of line // Call the main function when the page loads window.addEventListener('load', mainFunction); function msToHMS(unixTimestamp) { const date = new Date(unixTimestamp * 1000); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return `${hours}:${minutes}:${seconds}`; } function checkLocalStorage() { const checkData = localStorage.getItem("OT"); if (checkData) { return parseInt(checkData, 10); } else { const zero = 0; localStorage.setItem("OT", zero.toString()); return zero; } } function editLocalStorage(newValue) { const checkData = checkLocalStorage(); const currentTime = getCurrentUnixTimestamp(); if (currentTime > checkData || (currentTime < newValue && newValue < checkData)) { localStorage.setItem("OT", newValue.toString()); } } function checkSessionValidationExists() { if (typeof SERVER_DATA !== 'undefined' && SERVER_DATA.sessionValidation !== undefined) { return true; } else { return false; } } function getCurrentUnixTimestamp() { const currentTime = new Date(); const unixTimestamp = Math.floor(currentTime.getTime() / 1000); // Convert milliseconds to seconds return unixTimestamp; } function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function fetchData(url) { try { const response = await fetch(url); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } const data = await response.json(); return data; } catch (error) { throw new Error(`Failed to fetch data from ${url}: ${error.message}`); } } // Function to construct the payload from variables function payloadOT() { const action_type = "workOvertime"; return { action_type, _token }; } // Function to send the payload using POST request async function OT(payload) { const url = "https://www.erepublik.com/en/economy/workOvertime"; try { const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: Object.keys(payload) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(payload[key])}`) .join('&') }); const responseData = await response.json(); return responseData; } catch (error) { console.error("Error:", error); return null; } } function redirectToErepublik() { window.location.href = "https://www.erepublik.com/en/economy/myCompanies"; } })();