STDB Region Lock Checker

Get Region Lock Information Quickly

Verze ze dne 18. 10. 2018. Zobrazit nejnovější verzi.

// ==UserScript==
// @name         STDB Region Lock Checker
// @namespace    local.CR
// @version      0.0.3
// @description  Get Region Lock Information Quickly
// @author       CharRun
// @match        https://steamdb.info/app/*
// @grant        GM_xmlhttpRequest
// @icon         https://steamdb.info/static/logos/header.svg
// ==/UserScript==
(function() {
    var packages = document.getElementsByClassName('package');
    var count = packages.length;
    
    function createTitle(){
    	var head = document.getElementsByClassName('span2 sort-header')[0].parentElement;
    	var title = document.createElement('th');
    	title.innerHTML = "Region Lock Information"
    	title.style.width = "260px"
    	head.appendChild(title);
    }
    
    
    
    function createContainer(){
    	for(var i = 0; i < count; i++){
    		var infoContainer = document.createElement('td');
    		infoContainer.setAttribute("class","checkContainer")
    		infoContainer.innerHTML = "Waiting for check.";
    		infoContainer.style.width = "260px"
    		infoContainer.style.opacity = 1.0;
    		packages[i].appendChild(infoContainer);
    	}
    }
    
    
    
    function changeStatus(num,status,color){
    	var checkContainer = document.getElementsByClassName("checkContainer")[num]
    	checkContainer.innerHTML = status
    	if(color){
    		checkContainer.style.backgroundColor = color;
    	}
    }
    
    
    function reciver(num){
    	var subid = packages[num].getAttribute("data-subid")
    	GM_xmlhttpRequest({
            url: "https://steamdb.info/sub/"+subid+"/",
            method: "get",
            onload: function (info) {
            	check(num,info.response);
                //console.log(info);
            },
            onerror: changeStatus(num, "FAILED", "red"),
            onprogress: changeStatus(num, "loading","gray"),
        });
    }
    
    
    function check(num,info){
    	var Status = "";
    	var color;
    	var browserCheck = /checking_browser/.exec(info);
            if (browserCheck) {
                changeStatus(num,"Browser safety check detected, reloadpage please");
                // var reloadConfirm = confirm("Browser safety check detected, reloadpage please")
                // if (reloadConfirm) {
                // 	location.reload(true);
               	// }
                return;
            }
        info = info.split("id=\"info\"")[1].split("id=\"app\"")[0];
        var allow = /AllowPurchaseFromRestrictedCountries<\/td>\n<td>Yes<\/td>/ig.exec(info);
        var purchaseContries = /PurchaseRestrictedCountries .*[\s\S].*countries-list">(.*?)<\/td>/ig.exec(info);
        var runCountries = /onlyallowrunincountries .*[\s\S].*countries-list">(.*?)<\/td>/ig.exec(info);
    
       if(purchaseContries||runCountries){
       		if(allow && purchaseContries){
       			purchaseContries = purchaseContries[1];
       			Status = Status + "Purchase Only: " + purchaseContries + "<br>";
       			color = "orange";
       		}else if (!allow && purchaseContries) {
       			purchaseContries = purchaseContries[1];
       			Status = Status + "Can't Purchase Only: " + purchaseContries + "<br>";
       			color = "orange";
       		}else{
       			console.log("WTF");
       		}
       		if(runCountries){
    	   		runCountries = runCountries[1];
    	   		Status = Status + "RunOnly: " + runCountries;
    	   		color = "red";
       		}
       	}else{
       		Status = "No Restriction";
       		color = "green"
       		}
       changeStatus(num,Status,color);
    }
    
    function main(){
    	createTitle();
    	createContainer();
    	for(var num = 0; num < count; num++ ){
    	    reciver(num);
    	}
    }
    main();
})();