您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Displays your daily edit count in the WME toolbar. Warns if you might be throttled.
// ==UserScript== // @name Waze Edit Count Monitor // @namespace https://gf.qytechs.cn/en/users/45389-mapomatic // @version 2024.10.28.000 // @description Displays your daily edit count in the WME toolbar. Warns if you might be throttled. // @author MapOMatic // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/ // @require https://gf.qytechs.cn/scripts/24851-wazewrap/code/WazeWrap.js // @require https://update.gf.qytechs.cn/scripts/509664/WME%20Utils%20-%20Bootstrap.js // @license GNU GPLv3 // @contributionURL https://github.com/WazeDev/Thank-The-Authors // @grant GM_xmlhttpRequest // @grant GM_addElement // @grant GM_addStyle // @connect www.waze.com // @connect gf.qytechs.cn // ==/UserScript== /* global bootstrap */ (async function main() { 'use strict'; const downloadUrl = 'https://gf.qytechs.cn/scripts/40313-waze-edit-count-monitor/code/Waze%20Edit%20Count%20Monitor.user.js'; const sdk = await bootstrap({ scriptUpdateMonitor: { downloadUrl } }); const TOOLTIP_TEXT = 'Your daily edit count from your profile. Click to open your profile.'; let $outputElem = null; let $outputElemContainer = null; let userName; let savesWithoutIncrease = 0; let lastProfile; function log(message) { console.log('Edit Count Monitor:', message); } function updateEditCount() { sdk.DataModel.Users.getUserProfile({ userName }).then(profile => { // Add the counter div if it doesn't exist. if ($('#wecm-count').length === 0) { $outputElemContainer = $('<div>', { class: 'toolbar-button', style: 'font-weight: bold; font-size: 16px; border-radius: 10px; margin-left: 4px;' }); const $innerDiv = $('<div>', { class: 'item-container', style: 'padding-left: 10px; padding-right: 10px; cursor: default;' }); $outputElem = $('<a>', { id: 'wecm-count', href: sdk.DataModel.Users.getUserProfileLink({ userName }), target: '_blank', style: 'text-decoration:none', 'data-original-title': TOOLTIP_TEXT }); $innerDiv.append($outputElem); $outputElemContainer.append($innerDiv); if ($('#toolbar > div > div.secondary-toolbar > div.secondary-toolbar-actions > div.secondary-toolbar-actions-edit').length) { // Production WME, as of 4/25/2023 $('#toolbar > div > div.secondary-toolbar > div.secondary-toolbar-actions > div.secondary-toolbar-actions-edit').after($outputElemContainer); } else { // Beta WME, as of 4/25/2023 $('#toolbar > div > div.secondary-toolbar > div:nth-child(1)').after($outputElemContainer); } $outputElem.tooltip({ placement: 'auto top', delay: { show: 100, hide: 100 }, html: true, template: '<div class="tooltip wecm-tooltip" role="tooltip"><div class="tooltip-arrow"></div>' + '<div class="wecm-tooltip-header"><b></b></div>' + '<div class="wecm-tooltip-body tooltip-inner""></div></div>' }); } // log('edit count = ' + editCount + ', UR count = ' + urCount.count); // TODO: check all editCountByType values here? if (!lastProfile) { lastProfile = profile; } else if (lastProfile.dailyEditCount[lastProfile.dailyEditCount.length - 1] !== profile.dailyEditCount[profile.dailyEditCount.length - 1] || lastProfile.editCountByType.updateRequests !== profile.editCountByType.updateRequests || lastProfile.editCountByType.mapProblems !== profile.editCountByType.mapProblems || lastProfile.editCountByType.placeUpdateRequests !== profile.editCountByType.placeUpdateRequests || lastProfile.editCountByType.segmentHouseNumbers !== profile.editCountByType.segmentHouseNumbers || lastProfile.totalEditCount !== profile.totalEditCount) { savesWithoutIncrease = 0; } else { savesWithoutIncrease++; } let textColor; let bgColor; let warningStyleClass; if (savesWithoutIncrease < 5) { textColor = '#354148'; bgColor = 'white'; warningStyleClass = ''; } else if (savesWithoutIncrease < 10) { textColor = '#354148'; bgColor = 'yellow'; warningStyleClass = 'yellow'; } else { textColor = 'white'; bgColor = 'red'; warningStyleClass = 'red'; } $outputElemContainer.css('background-color', bgColor); $outputElem.css('color', textColor).html(profile.dailyEditCount[profile.dailyEditCount.length - 1].toLocaleString()); const totalEditCountText = `<li>Total edits: ${profile.totalEditCount.toLocaleString()}</li>`; const urCountText = `<li>URs closed: ${profile.editCountByType.updateRequests.toLocaleString()}</li>`; const purCountText = `<li>PURs closed: ${profile.editCountByType.placeUpdateRequests.toLocaleString()}</li>`; const mpCountText = `<li>MPs closed: ${profile.editCountByType.mapProblems.toLocaleString()}</li>`; const segmentEditCountText = `<li>Segment edits: ${profile.editCountByType.segments.toLocaleString()}</li>`; const placeEditCountText = `<li>Place edits: ${profile.editCountByType.venues.toLocaleString()}</li>`; const hnEditCountText = `<li>Segment HN edits: ${profile.editCountByType.segmentHouseNumbers.toLocaleString()}</li>`; let warningText = ''; if (savesWithoutIncrease) { warningText = `<div class="wecm-warning ${warningStyleClass}">${savesWithoutIncrease} ${ (savesWithoutIncrease > 1) ? 'consecutive saves' : 'save'} without an increase. ${ (savesWithoutIncrease >= 5) ? '(Are you throttled?)' : ''}</div>`; } $outputElem.attr('data-original-title', `${ TOOLTIP_TEXT}<ul>${ totalEditCountText}${ urCountText}${ purCountText}${ mpCountText}${ segmentEditCountText}${ hnEditCountText}${ placeEditCountText}</ul>${ warningText}`); lastProfile = profile; }); } async function init() { userName = sdk.State.getUserInfo().userName; GM_addStyle(` .wecm-tooltip li {text-align: left;} .wecm-tooltip .wecm-warning {border-radius:8px; padding:3px; margin-top:8px; margin-bottom:5px;} .wecm-tooltip .wecm-warning.yellow {background-color:yellow; color:black;} .wecm-tooltip .wecm-warning.red {background-color:red; color:white;} `); sdk.Events.on({ eventName: 'wme-save-finished', eventHandler: onSaveFinished }); // Update the edit count first time. updateEditCount(); log('Initialized.'); } function onSaveFinished(result) { if (result.success) updateEditCount(); } init(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址