nameZee

Simple Tool to Help Name Undeployed Munzees Quicker

目前为 2017-11-19 提交的版本,查看 最新版本

// ==UserScript== 
// @name nameZee 
// @namespace Rynee 
// @author hugosoft 
// @version 1.0
// @include http://www.munzee.com/* 
// @include https://www.munzee.com/* 
// @grant unsafeWindow 
// @grant GM_xmlhttpRequest 
// @grant GM_getValue 
// @grant GM_setValue 
// @grant GM_deleteValue 
// @description Simple Tool to Help Name Undeployed Munzees Quicker  
// ==/UserScript==  
// 
// 
// 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
function go() { 
    var version = "1.2"; 
      
    var baseURL = "https://www.munzee.com"; 
    var virtualImg = 'virtual';
    
    var currentURL = null;
    var username = null;
    var logonUsername = null;
    
    
    var ignoreChars = ['#', '(', ')', '[', ']', '{', '}'];
    
    /**  
     * is value numeric? 
     */ 
    function isNumeric(val){ 
        return !isNaN(val); 
    } 
    
    console.log("nameZee Version: " + version);
    
    
    Number.decPoint = '.';
    Number.thousand_sep = ',';
     
      
    /** 
     * endsWith 
     */
    String.prototype.endsWith = function(suffix) { 
        return this.indexOf(suffix, this.length - suffix.length) !== -1; 
    };
    
    /**
     * startsWith
     * */
    String.prototype.startsWith = function( prefix ) {
    	return this.substring( 0, prefix.length ) === prefix;
  	}

    /** 
     * replaceAll 
     */
    String.prototype.replaceAll = function (find, replace) { 
        var str = this; 
        return str.replace(new RegExp(find, 'g'), replace); 
    };
    
    /**
     * contains
     * */
	String.prototype.contains = function() {
        return String.prototype.indexOf.apply( this, arguments ) !== -1;
    };    
   
    
    /**
     * extract logonUsername from profile link
     * */
    function getLogonUsername() {
        try {
            //search menu (ul)
            var container = $($(".user-menu"));
            //first li
            container = $(container.children().first());
            //first a
            container = $(container.children().first());
            //attribute href
            container = container.attr('href');
            //console.log(container);
            //token with username in href
            var res = container.split("/");
            //console.log(res);
            var logonUsername = res[res.length-2];
            return logonUsername;
        } catch (e) {
            console.log(e);
        }
    }
    
      
    $(document).ready(function() {
        //checkForUpdate();
        currentURL = new String(document.URL); 
        if (!currentURL.endsWith("/")) { 
            currentURL = currentURL + "/"; 
        }         
          
        username = $(".avatar-username").text(); 
        if (username==undefined || username.length<1) { 
            username = null; 
        } 
        
        logonUsername = getLogonUsername();
        if (logonUsername==undefined || logonUsername.length<1) { 
            logonUsername = null; 
        } 
        
        //rename undeploys
        if (username!=null && logonUsername==username && currentURL.toLowerCase().startsWith(baseURL + '/m/' + username.toLowerCase() + "/undeploys/")) {
            //new action button
            var container = $('.page-header');
            container = $(container).find('.pull-right');
            var buttonCode = '<div class="pull-right"><a id="renumberUndeploys" class="btn green" style="margin-left:10px;margin-right:10px">renumber</a></div>';
            var optionCode = '<div class="pull-right"><select id="selBracket" class="form-control"><option value="curlyBracket">{ }</option><option value="squareBracket">[ ]</option><option value="roundBracket">( )</option><option selected value="hash">#</option><option value="blank"> </option></select></div>';
            $(container).append(optionCode+buttonCode);
            //button event
            $("#renumberUndeploys").click(function() {
                doRenumber();
            });
        }
		
        //rename deploys
        /*if (username!=null && logonUsername==username && currentURL.toLowerCase().startsWith(baseURL + '/m/' + username.toLowerCase() + "/deploys/")) {
            //new action button
            var container = $('.page-header');
            container = $(container).find('h2');
            $(container).append(' <div class="pull-right"><a id="renumberDeploys" class="btn green" style="margin-left:10px">renumber</a></div><div class="clearfix"></div>');
            //button event
            $("#renumberDeploys").click(function() {
                doRenumber();
            });            
        }*/
    });
    
    /**
     * prefix for number
     * */
    function getPrefix() {
        if ($( "#selBracket" ).val()=='hash') {
            return "#";
        }
        if ($( "#selBracket" ).val()=='curlyBracket') {
            return '{';
        }
        if ($( "#selBracket" ).val()=='squareBracket') {
            return '[';
        }
        if ($( "#selBracket" ).val()=='roundBracket') {
            return '(';
        }
        if ($( "#selBracket" ).val()=='blank') {
            return ' ';
        }
		return '[';
    }
    
    /**
     * suffix for number
     * */
    function getSuffix() {
        if ($( "#selBracket" ).val()=='hash') {
            return "";
        }
        if ($( "#selBracket" ).val()=='curlyBracket') {
            return '}';
        }
        if ($( "#selBracket" ).val()=='squareBracket') {
            return ']';
        }
        if ($( "#selBracket" ).val()=='roundBracket') {
            return ')';
        }
        if ($( "#selBracket" ).val()=='blank') {
            return '';
        }        
		return '';
    }
  
    /**
     * rename undeploys and deploys
     * */
    function doRenumber() {
		var sections = $("section").get();
		var count=0;
		//inspect each section
		for ( var i = 0; i < sections.length; i++ ) {
        	if(isRenumber(getFriendlyName(sections[i]), getLfdNr(sections[i])) && !isVirtual(sections[i])) {
            	parseSectionTimeoutWrapper(count++, sections[i]);
            } else {
                console.log("IGNRORED::" + getFriendlyName(sections[i]) + " virtual=" + isVirtual(sections[i]));
            }
        }
    }
    
    /** just a wrapper for parseSection with timeout*/
    function parseSectionTimeoutWrapper(i, section) {
        setTimeout(function() {
            parseSection(i, section);
        }, 1500*i);
    }
	
    /**
     * parseSection of munzees and call post-method for renumbering
     */
	function parseSection(i, section) {
		var lfdNr = getLfdNr(section);
        var originalFriendlyName = getFriendlyName(section);
        if(isRenumber(originalFriendlyName, getLfdNr(section)) && !isVirtual(section)) {
            var adminURL = 'https://www.munzee.com/m/' + username + '/' + lfdNr + "/admin/";
            var oldFriendlyName = removeGeneratedNumber(originalFriendlyName);
            var newFriendlyName = oldFriendlyName +  " " + getPrefix() + lfdNr + getSuffix();
            console.log(adminURL + ":: " + originalFriendlyName + "->" + newFriendlyName);            
            $.post(adminURL, { friendly_name: ""+newFriendlyName, notes:""}, function(result) {
            	//console.log(result);
            });
        }
	}
    
    /** 
     * remove the generated Number of friendly name
     */
    function removeGeneratedNumber(friendlyName) {
        while (friendlyName.length>0 && isNumeric(friendlyName[friendlyName.length-1])) {
        	friendlyName = friendlyName.substr(0,friendlyName.length-1);
            console.log(friendlyName);
        }
    	return friendlyName;
    }
	
    /**  
     * is value numeric? 
     */ 
    function isNumeric(val){ 
        return !isNaN(val); 
    } 

    /** get lfdNr of current section*/
	function getLfdNr(section) {
		var munzeeURL = baseURL + $(section).find('a').attr('href');
		arr = munzeeURL.split("/");
		return arr[5];
	}
    
    /** get friendlyName of current section*/
    function getFriendlyName(section) {
        var friendlyName = $(section).find("a")[1];
        return $(friendlyName).text();
    }
    
    /** renumbering permitted? */
    function isRenumber(friendlyName, munzeeNumber) {
		friendlyName = friendlyName.trim();
        //for (i=0; i <ignoreChars.length; i++) {
            if (friendlyName.contains(munzeeNumber)) {
                return false;
            }
		//}
        return true;
    }
	
    function isVirtual(section) {
        var imgageSrc = $(section).find(".pin").attr('src');
        return imgageSrc.contains(virtualImg);
    }

} // end go 
  
  
  
// jQuery workaround for Chrome 
// a function that loads jQuery and calls a callback function when jQuery has finished loading 
function addJQuery(callback) { 
        var script = document.createElement("script"); 
        script.textContent = "(" + callback.toString() + ")();"; 
        document.body.appendChild(script); 
}    
// load jQuery and execute 
addJQuery(go);