Torn company stock order

Automatically calculate stock percent based on sale and enter the order amount to order up to max capasity.

目前為 2018-08-05 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Torn company stock order
// @version      0.1.0
// @description  Automatically calculate stock percent based on sale and enter the order amount to order up to max capasity.
// @author       j0hnZen
// @match        https://www.torn.com/*
// @run-at       document-start
// @grant        none
// @namespace    j0hnZen
// ==/UserScript==

// check that script is run on right page
if (window.location.pathname == "/companies.php") {
    window.onload = function() {

        //add CSS for API key entry
        var style_api = document.createElement("style");
        style_api.type = "text/css";
        style_api.innerHTML = `
         #apiKey {
        height: 18px;
        font-size: 1.5em;
        width: 400px;
        font-family: Verdana;
        letter-spacing: .05em;
        margin-left: 5px;
        margin-bottom: 5px;
        padding: 5px;
        }
        `
        document.head.appendChild(style_api);

        //Add observer to triger when the stock tab is selected
        var targetNode = document.getElementById("stock");
        var config = { attributes: true, childList: true, subtree: true };
        var callback = function(mutationsList) {
            for(var mutation of mutationsList) {
                if (mutation.type == 'childList') {
                    if (addUI()){
                        var urlStock = 'https://api.torn.com/company/?selections=stock&key=';
                        var urlStorage = 'https://api.torn.com/company/?selections=detailed&key=';
                        urlStock += localStorage.getItem("_apiKey") ? localStorage.getItem("_apiKey") : '';
                        urlStorage += localStorage.getItem("_apiKey") ? localStorage.getItem("_apiKey") : '';
                        var storage

                        fetch(urlStorage)
                            .then(function(response) {
                            if(response.ok) {
                                return response.json();
                            }
                            throw new Error('Network response was not ok.');
                        })
                            .then(function(myJson) {
                            if (myJson.error){
                                throw new Error(myJson.error.error);
                            }
                            storage = myJson.company_detailed.upgrades.storage_space;
                        });

                        fetch(urlStock)
                            .then(function(response) {
                            if(response.ok) {
                                return response.json();
                            }
                            throw new Error('Network response was not ok.');
                        })
                            .then(function(myJson) {
                            if (myJson.error){
                                throw new Error(myJson.error.error);
                            }
                            var total = 0;
                            for (var key1 in myJson.company_stock) {
                                total += myJson.company_stock[key1].sold_amount;
                            }

                            for (var key in myJson.company_stock) {
                                if (myJson.company_stock.hasOwnProperty(key)) {
                                    var orderPercent = myJson.company_stock[key].sold_amount/total
                                    var orderAmount = 0;

                                    orderAmount = Math.floor((storage * orderPercent) - myJson.company_stock[key].in_stock - myJson.company_stock[key].on_order) > 0 ? Math.floor((250000 * orderPercent) - myJson.company_stock[key].in_stock - myJson.company_stock[key].on_order): 0;

                                    $( ".stock-list.fm-list.t-blue-cont.h" ).find("div:contains("+key+")").parent().find(".quantity").find("input").val(orderAmount);
                                    $( ".stock-list.fm-list.t-blue-cont.h" ).find("div:contains("+key+")").parent().find(".quantity").find("input").trigger('keyup');
                                }
                            }
                        }).catch(function(error) {
                            console.log('There has been a problem with your fetch operation: ', error.message);
                        });
                        break;
                    }
                }
            }
        };
        // Create an observer instance linked to the callback function
        var observer = new MutationObserver(callback);

        // Start observing the target node for configured mutations
        observer.observe(targetNode, config);
    }
}

function addUI (){
    if ( document.getElementsByClassName("StockAutoFill").length == 0 ){
        var div_api = document.createElement("div");
        div_api.className = "StockAutoFill";
        var apiKey = document.createElement("input");
        apiKey.type = "text";
        apiKey.id = "apiKey";
        apiKey.placeholder = "Enter API key here";
        apiKey.value = localStorage.getItem("_apiKey") ? localStorage.getItem("_apiKey") : "";
        div_api.appendChild(apiKey);

        var button_save = document.createElement("button");
        button_save.type = "button";
        button_save.innerText = "Save";
        button_save.id = "btn_save";
        div_api.appendChild(button_save);

        var cw = document.getElementById("stock").getElementsByClassName("stock-list-wrap");
        cw[0].parentNode.insertBefore(div_api, cw[0]);

        document.getElementById("btn_save").addEventListener("click", function() {
            var key = document.getElementById("apiKey");
            localStorage.setItem("_apiKey", key.value);
        });
        return true;
    }
    else{
        return false;
    }
}

QingJ © 2025

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