Simple Tool to Help Name Undeployed Munzees Quicker
// ==UserScript==
// @name nameZee
// @namespace Rynee
// @author hugosoft
// @author technical13
// @version 1.3
// @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 isDebugMode = false;
var version = '1.3';
var baseURL = 'https://www.munzee.com';
var virtualImg = 'virtual';
var strParams, objParams;
var currentURL = new String( document.URL );
if ( currentURL.lastIndexOf( '?' ) !== -1 ) {
objParams = {};
strParams = currentURL.split( '#' )[ 0 ].substr( currentURL.lastIndexOf( '?' ) + 1 );
var arrParams = strParams.split( '&' );
for ( var param = 0; param < arrParams.length; param++ ) {
var arrPair = arrParams[ param ].split( '=' );
objParams[ arrPair[ 0 ] ] = ( arrPair[ 1 ] || true );
}
if ( objParams.debug ) {
isDebugMode = true;
}
currentURL = currentURL.substr( 0, currentURL.lastIndexOf( '?' ) );
}
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' );
if ( isDebugMode ) { console.log( 'getLogonUsername() container is: %s', container ); }
//token with username in href
var res = container.split( '/' );
if ( isDebugMode ) { console.log( 'getLogonUsername() res is: %o', res ); }
var logonUsername = res[ res.length - 2 ];
return logonUsername;
} catch ( errLogonUN ) {
alert( 'Error attempting to extract logon username from profile link.\n\n\tPlease check the console for details.' );
console.log( errLogonUN );
}
}
$( document ).ready( function() {
//checkForUpdate();
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() {
switch ( $( '#selBracket' ).val() ) {
case 'curlyBracket':
return '{';
case 'squareBracket':
return '[';
case 'roundBracket':
return '(';
case 'hash':
return "#";
case 'blank':
default:
return '';
}
}
/**
* suffix for number
* */
function getSuffix() {
switch ( $( '#selBracket' ).val() ) {
case 'curlyBracket':
return '}';
case 'squareBracket':
return ']';
case 'roundBracket':
return ')';
case 'hash':
case 'blank':
default:
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 {
if ( isDebugMode ) { console.log( 'doRenumber() 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();
if ( isDebugMode ) {
console.log( 'parseSection() section: %o', section );
console.log( 'parseSection(): ' + adminURL + ':: ' + originalFriendlyName + '->' + newFriendlyName );
}
$.post( adminURL, { friendly_name: '' + newFriendlyName, notes: '' }, function( result ) {
if ( isDebugMode ) {
if ( result.match( /This munzee has been updated!/ ) !== -1 ) {
section.getElementsByClassName( 'munzee-name' )[ 0 ].children[ 1 ].innerText = newFriendlyName;
}
}
} );
}
}
/**
* 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 );
if ( isDebugMode ) { console.log( 'removeGeneratedNumber() is returning: ' + friendlyName ); }
}
return friendlyName;
}
/** get lfdNr of current section*/
function getLfdNr( section ) {
var munzeeURL = baseURL + $( section ).find( 'a' ).attr( 'href' );
var arr = munzeeURL.split( '/' );
if ( isDebugMode ) { console.log( 'getLfdNr() is returning: ' + arr[ 5 ] ); }
return arr[ 5 ];
}
/** get friendlyName of current section*/
function getFriendlyName( section ) {
var friendlyName = $( section ).find( 'a' )[ 1 ];
if ( isDebugMode ) { console.log( 'getFriendlyName() is returning: ' + $( friendlyName ).text() ); }
return $( friendlyName ).text();
}
/** renumbering permitted? */
function isRenumber( friendlyName, munzeeNumber ) {
friendlyName = friendlyName.trim();
//for ( var i = 0; i < ignoreChars.length; i++ ) {
if ( friendlyName.contains( munzeeNumber ) ) {
return false;
}
//}
return true;
}
function isVirtual( section ) {
var imgageSrc = $( section ).find( '.pin' ).attr( 'src' );
if ( isDebugMode ) { console.log( 'getFriendlyName() is returning: ' + imgageSrc.contains( virtualImg ) ); }
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 );
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址