您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Easy way to log multiple TBs at once!
// ==UserScript== // @name Bulk TB Logger // @namespace none // @version 2020.06.19.2017 // @description Easy way to log multiple TBs at once! // @author Technical_13 // @supportURL https://Discord.me/TheShoeStore // @include *project-gc.com/Tools/DiscoverTrackables* // @include *logthemall.org/* // @grant none // ==/UserScript== var isDebug = false; var intVerbosity = 0; const ver = '2020.06.19.2017'; const scriptName = 'Bulk TB Logger v' + ver; console.info( '%s: Script loaded.', scriptName ); function toBoolean( val ) { const arrTrue = [ undefined, null, '', true, 'true', 1, '1', 'on', 'yes' ]; val = ( typeof( val ) === 'string' ? val.toLowerCase() : val ); return ( arrTrue.indexOf( val ) !== -1 ? true : false ); } const strSite = document.URL.match( /https?:\/\/(?:www\.)?(.*?\.(?:com|org))(?:.*)/i )[ 1 ].toLowerCase(); const intParamsStart = ( document.URL.indexOf( '?' ) + 1 ); const strParams = document.URL.substr( intParamsStart ); const arrParamSets = strParams.split( '&' ); var objParams = {}; arrParamSets.forEach( function( strParam ) { let arrParam = strParam.split( '=' ); let strParamName = ( arrParam[ 0 ].toLowerCase() || '' ); if ( strParamName === 'debug' ) { isDebug = toBoolean( arrParam[ 1 ] ); } else if ( strParamName === 'verbosity' ) { intVerbosity = ( arrParam[ 1 ] ? ( parseInt( arrParam[ 1 ] ) < 0 ? 0 : ( parseInt( arrParam[ 1 ] ) > 9 ? 9 : parseInt( arrParam[ 1 ] ) ) ) : 9 ); } } ); if ( isDebug && intVerbosity > 1 ) { console.log( '%s: strSite detected: %o', scriptName, strSite ); } if ( isDebug ) { console.log( '%s: Debug mode is on with verbosity level: %o', scriptName, intVerbosity ); } arrParamSets.forEach( function( strParam ) { let arrParam = strParam.split( '=' ); let strParamName = ( arrParam[ 0 ].toLowerCase() || '' ); if ( strParamName === 'fbclid' ) { window.location = window.location.href.replace( '&' + strParam, '' ); } else if ( strParamName === 'debug' || strParamName === 'verbosity' ) { objParams.debug = isDebug; objParams.verbosity = intVerbosity; } else if ( strParamName === 'date' ) { let arrDate = decodeURIComponent( arrParam[ 1 ] ).split( '/' ); if ( arrDate.length !== 3 ) { console.error( '%s: Unable to parse date: please use mm/dd/yyyy format', scriptName ); } else { console.log( '%s: Date parameter found: %o', scriptName, arrDate ); let strMonth = ( parseInt( arrDate[ 0 ] ) < 10 ? '0' : '' ) + parseInt( arrDate[ 0 ] ); let strDate = ( parseInt( arrDate[ 1 ] ) < 10 ? '0' : '' ) + parseInt( arrDate[ 1 ] ); let intYear = ( new Date() ).getFullYear().toString().substr( 2 ); let intCentury = ( new Date() ).getFullYear().toString().substr( 0, 2 ); let strFullYear = ( parseInt( arrDate[ 2 ] ) < 100 ? ( parseInt( arrDate[ 2 ] ) <= intYear ? intCentury : ( intCentury - 1 ) ) + parseInt( arrDate[ 2 ] ) : arrDate[ 2 ] ); let objDate = ( new Date( strMonth + '-' + strDate + '-' + strFullYear + 'T00:00:00.000Z' ) ); let intMonth = ( objDate.getMonth() + 1 ); let intDate = objDate.getDate(); let intFullYear = ( objDate.getFullYear() + 1 ); objParams.date = { month: strMonth, day: strDate, year: strFullYear, string: strMonth + '/' + strDate + '/' + strFullYear }; if ( isDebug && intVerbosity > 3 ) { console.log( '%s: objParams.date set to: %o', scriptName, objParams.date ); } } } else if ( strParamName === 'codes' ) { objParams.codes = decodeURIComponent( arrParam[ 1 ] || '' ).toUpperCase(); if ( isDebug && intVerbosity > 3 ) { console.log( '%s: objParams.codes set to: %o', scriptName, objParams.codes ); } } else if( strParamName === 'logentry' ) { objParams.logentry = decodeURIComponent( arrParam[ 1 ] ) + ' Logged with [Bulk TB Logger](https://gf.qytechs.cn/en/scripts/372804-bulk-tb-logger)!'; if ( isDebug && intVerbosity > 3 ) { console.log( '%s: objParams.logentry set to: %o', scriptName, objParams.logentry ); } } else if ( strParamName === 'spellcheck' ) { objParams.spellcheck = toBoolean( arrParam[ 1 ] ); if ( isDebug && intVerbosity > 3 ) { console.log( '%s: objParams.spellcheck set to: %o', scriptName, objParams.spellcheck ); } } else { objParams[ strParamName ] = ( arrParam[ 1 ] || '' ); if ( isDebug && intVerbosity > 2 ) { console.log( '%s: Unknown %s parameter found: %o', scriptName, strParamName, objParams[ strParamName ] ); } } } ); ( function() { var domPermalink = document.createElement( 'input' ); domPermalink.name = 'permalink'; domPermalink.type = 'button'; domPermalink.value = 'Get Permalink'; var objSetDate, objCodes, objLogEntry, objCreatePermaLink; if ( ( strSite === 'logthemall.org' || strSite === 'project-gc.com' ) && isDebug && intVerbosity > 1 ) { console.log( '%s: Processing page with objParams: %o', scriptName, objParams ); } if ( strSite === 'logthemall.org' ) { objCodes = document.getElementById( 'Codes' ); objLogEntry = document.getElementById( 'LogEntry' ); objCreatePermaLink = document.getElementsByName( 'Submit' )[ 0 ]; if ( objParams.date ) { if ( isDebug && intVerbosity > 2 ) { console.log( '%s: Setting date using: %o', scriptName, objParams.date.string ); } document.getElementsByName( 'datedisc' )[ 0 ].value = objParams.date.string; } domPermalink.setAttribute( 'onClick', "javascript:alert( 'https://www." + strSite + "?Codes=' + document.getElementById( 'Codes' ).value.toUpperCase() + '&LogEntry=' + encodeURIComponent( document.getElementById( 'LogEntry' ).value ) + '&date=' + document.getElementsByName( 'datedisc' )[ 0 ].value.replace( /[\.\-]/g, '/' ) );" ); } else if ( strSite === 'project-gc.com' ) { objCodes = document.getElementById( 'tb_codes' ); objLogEntry = document.getElementById( 'log_text' ); objCreatePermaLink = document.getElementsByName( 'discover' )[ 0 ]; if ( objParams.date ) { if ( isDebug && intVerbosity > 2 ) { console.log( scriptName + ': Setting date to: %o', objParams.date ); } document.getElementsByName( 'month' )[ 0 ].querySelector( 'option[value="' + parseInt( objParams.date.month ) + '"]' ).setAttribute( 'selected', 'true' ); document.getElementsByName( 'day' )[ 0 ].querySelector( 'option[value="' + objParams.date.day + '"]' ).setAttribute( 'selected', 'true' ); document.getElementsByName( 'year' )[ 0 ].querySelector( 'option[value="' + objParams.date.year + '"]' ).setAttribute( 'selected', 'true' ); } domPermalink.classList.add( 'btn', 'btn-primary' ); domPermalink.setAttribute( 'onClick', "javascript:alert( 'https://www." + strSite + "?Codes=' + encodeURIComponent( document.getElementById( 'tb_codes' ).value.toUpperCase().replace( /\s/g, ',' ) ) + '&LogEntry=' + encodeURIComponent( document.getElementById( 'log_text' ).value ) + '&date=' + ( parseInt( document.getElementsByName( 'month' )[ 0 ].value ) < 10 ? '0' : '' ) + document.getElementsByName( 'month' )[ 0 ].value + '/' + document.getElementsByName( 'day' )[ 0 ].value + '/' + document.getElementsByName( 'year' )[ 0 ].value );" ); } else { console.error( '%s: The website, %s, is not currently supported by this script.', scriptName, strSite ); } if ( strSite === 'logthemall.org' || strSite === 'project-gc.com' ) { objCodes.setAttribute( 'spellcheck', false ); if ( objParams.codes ) { if ( isDebug && intVerbosity > 2 ) { console.log( '%s: Filling in codes: %o', scriptName, objParams.codes ); } objCodes.value = objParams.codes; } objLogEntry.setAttribute( 'spellcheck', toBoolean( objParams.spellcheck ) ); if ( objParams.logentry ) { if ( isDebug && intVerbosity > 2 ) { console.log( '%s: Filling in Log Entry: %o', scriptName, objParams.logentry ); } objLogEntry.value = objParams.logentry; } objCreatePermaLink.insertAdjacentElement( 'afterend', domPermalink ); } } )();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址