Created
April 30, 2018 19:48
-
-
Save cuylerstuwe/73b27308fbcf040ee54121e5e4137bfc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ==UserScript== | |
| // @name mTurk Wage Flash: Best Precision, Notifications, Bonuses, Measured Losses, No jQuery Bloat, SFX... | |
| // @author Cuyler Stuwe (salembeats) | |
| // @version 91 | |
| // @description Latest update: Fixes for mTurk breaking changes. | |
| // @icon https://i.imgur.com/Y68Qxdd.png | |
| // @include https://www.mturk.com/mturk/preview?* | |
| // @include https://www.mturk.com/mturk/accept?* | |
| // @include https://www.mturk.com/mturk/continue?* | |
| // @include https://www.mturk.com/mturk/return?* | |
| // @include https://www.mturk.com/mturk/previewandaccept* | |
| // @include https://worker.mturk.com/projects/* | |
| // @namespace salembeats | |
| // @grant window.close | |
| // @grant GM_notification | |
| // @grant GM_xmlhttpRequest | |
| // @grant GM_setValue | |
| // @grant GM_getValue | |
| // @grant GM_deleteValue | |
| // @connect 127.0.0.1 | |
| // ==/UserScript== | |
| const PLAY_SFX_ON_SUBMIT_EXPIRE_RETURN_REFRESH = false; | |
| const MINIBLIP_SOUND_THRESHOLD_SECONDS = 10; // TODO: Will be used in an upcoming version to switch to very quick/unintrusive sounds for quick-submitting batches. | |
| // Notifications are shown for a fraction of time that's proportionate to the time it took to finish the HIT. | |
| // This controls that ratio. | |
| const NOTIFICATION_DISPLAY_TIME_RATIO_DIVIDER = 2; | |
| const SECONDS_TO_MILLISECONDS_MULTIPLER = 1000; | |
| const SPRINT_TIMEOUT_SECONDS = 60; | |
| const SPRINT_TIMEOUT_MILLISECONDS = SPRINT_TIMEOUT_SECONDS * SECONDS_TO_MILLISECONDS_MULTIPLER; | |
| const WAGE_HIGH = 10; | |
| const WAGE_MED = 5; | |
| const DEBUG_FAKE_SUBMIT_DETECTION = false; | |
| const COMPLETION_DB_PREFIX = "mtwf-v1-"; | |
| let isWorkerSite = window.location.href.includes("worker.mturk.com"); | |
| const USE_ARDUINO_SERVER = true; | |
| var notificationsEnabled; | |
| let hitGroupID = window.location.href.match(/projects\/([^/]+)/)[1]; | |
| let completionDBKey = COMPLETION_DB_PREFIX + hitGroupID; | |
| var wwwSiteHitName; | |
| var wwwSiteHitNameElement = document.querySelector("div[style='white-space:nowrap; overflow:hidden; text-overflow:ellipsis;']"); | |
| const HIT_SITE_NAME_NOTIFICATION_MAX_CHARS = 20; | |
| if(wwwSiteHitNameElement) { | |
| wwwSiteHitName = wwwSiteHitNameElement.innerText.trim(); | |
| } | |
| else { | |
| const divID = document.querySelector(`[data-react-class*="require('reactComponents/common/ShowModal')"]`); | |
| var reactProps = divID.getAttribute("data-react-props"); | |
| var reactJson = JSON.parse(reactProps); | |
| wwwSiteHitName = reactJson.modalOptions.projectTitle; | |
| } | |
| /* | |
| Notification.requestPermission().then( function(permission) { | |
| if (result === 'denied') { | |
| console.log("Wage Flash not allowed to use notifications."); | |
| return; | |
| } | |
| if (result === 'default') { | |
| console.log("User didn't decide whether or not to allow notifications for Wage Flash."); | |
| return; | |
| } | |
| notificationsEnabled = true; | |
| }); | |
| */ | |
| // Current GM Method always has notifications enabled. | |
| notificationsEnabled = true; | |
| const RUPEE_OGG_BASE64 = "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C6HQkJUAQB4AAEGIUowxxpyUUinGnHNOSqkUY845J6VkjDHnnJNSMsaYc85JKR1zzjnnpJSMOeecc1JK55xzzjkppZTOOeeclFJKCJ1zTkoppXPOOScAAKjAAQAgwEaRzQlGggoNWQkApAIAGBzHsjRN0zxPFDVJ0jTP8zxRNE1NsjTN8zxPFE2T53meKIqiaaoqz/M8URRF01RVriuKpmmaqqqqZFkURdE0VVV1YZqmqaqq6rowTVFUVdV1Xciyaaqq68oybNs0VdV1ZRmoqqrKriwD11VV15VlAQDgCQ4AQAU2rI5wUjQWWGjISgAgAwCAIAQhpRRCSimElFIIKaUQEgAAMOAAABBgQhkoNGRFABAnAAAgJKWCTkoloZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWTUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUklJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJJKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZQKANCNcADQfTChDBQashIASAUAAIxRijEIqcVWIcSYcxJaa61CiDHnJLSUYs+YcxBKaS22njHHIJSSWou9lM5JSa21GHsqHaOSUksx9t5LKSWl2GLsvaeQQo4txth7zzGlFlursfdeY0qx1Rhj7733GGOrsdbee+8xtlZrjgUAYDY4AEAk2LA6wknRWGChISsBgJAAAMIYpRhjzDnnnHNOSskYc85BCCGEEEopGWPMOQghhBBCKSVjzjkHIYRQQiilZMw56CCEUEIopZTOOQcdhBBCCaWUkjHnIIQQQgmllFI65yCEEEIo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"; | |
| const ITEM_OGG_BASE64 = "T2dnUwACAAAAAAAAAACpF+ICAAAAANXO3egBHgF2b3JiaXMAAAAAAkSsAAAAAAAAAPoAAAAAAAC4AU9nZ1MAAAAAAAAAAAAAqRfiAgEAAAC721LrEEz//////////////////8EDdm9yYmlzKgAAAFhpcGguT3JnIGxpYlZvcmJpcyBJIDIwMTAwMzI1IChFdmVyeXdoZXJlKQEAAAAOAAAARU5DT0RFUj1SRUFQRVIBBXZvcmJpcyFCQ1YBAAABABhjVClGmVLSSokZc5QxRplikkqJpYQWQkidcxRTqTnXnGusubUghBAaU1ApBZlSjlJpGWOQKQWZUhBLSSV0EjonnWMQW0nB1phri0G2HIQNmlJMKcSUUopCCBlTjCnFlFJKQgcldA465hxTjkooQbicc6u1lpZji6l0kkrnJGRMQkgphZJKB6VTTkJINZbWUikdc1JSakHoIIQQQrYghA2C0JBVAAABAMBAEBqyCgBQAAAQiqEYigKEhqwCADIAAASgKI7iKI4jOZJjSRYQGrIKAAACABAAAMBwFEmRFMmxJEvSLEvTRFFVfdU2VVX2dV3XdV3XdSA0ZBUAAAEAQEinmaUaIMIMZBgIDVkFACAAAABGKMIQA0JDVgEAAAEAAGIoOYgmtOZ8c46DZjloKsXmdHAi1eZJbirm5pxzzjknm3PGOOecc4pyZjFoJrTmnHMSg2YpaCa05pxznsTmQWuqtOacc8Y5p4NxRhjnnHOatOZBajbW5pxzFrSmOWouxeaccyLl5kltLtXmnHPOOeecc84555xzqhenc3BOOOecc6L25lpuQhfnnHM+Gad7c0I455xzzjnnnHPOOeecc4LQkFUAABAAAEEYNoZxpyBIn6OBGEWIacikB92jwyRoDHIKqUejo5FS6iCUVMZJKZ0gNGQVAAAIAAAhhBRSSCGFFFJIIYUUUoghhhhiyCmnnIIKKqmkoooyyiyzzDLLLLPMMuuws8467DDEEEMMrbQSS0211VhjrbnnnGsO0lpprbXWSimllFJKKQgNWQUAgAAAEAgZZJBBRiGFFFKIIaaccsopqKACQkNWAQCAAAACAAAAPMlzREd0REd0REd0REd0RMdzPEeUREmUREm0TMvUTE8VVdWVXVvWZd32bWEXdt33dd/3dePXhWFZlmVZlmVZlmVZlmVZlmVZgtCQVQAACAAAgBBCCCGFFFJIIaUYY8wx56CTUEIgNGQVAAAIACAAAADAURzFcSRHciTJkixJkzRLszzN0zxN9ERRFE3TVEVXdEXdtEXZlE3XdE3ZdFVZtV1Ztm3Z1m1flm3f933f933f933f933f93UdCA1ZBQBIAADoSI6kSIqkSI7jOJIkAaEhqwAAGQAAAQAoiqM4juNIkiRJlqRJnuVZomZqpmd6qqgCoSGrAABAAAABAAAAAAAomuIppuIpouI5oiNKomVaoqZqriibsuu6ruu6ruu6ruu6ruu6ruu6ruu6ruu6ruu6ruu6ruu6ruu6LhAasgoAkAAA0JEcyZEcSZEUSZEcyQFCQ1YBADIAAAIAcAzHkBTJsSxL0zzN0zxN9ERP9ExPFV3RBUJDVgEAgAAAAgAAAAAAMCTDUixHczRJlFRLtVRNtVRLFVVPVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVNU3TNE0gNGQlABAFAAA6Sy3W2iuAlIJWg2gQZBBz75BTTmIQomLMQcxBdRBCab3HzDEGreZYMYSYxFgzhxSD0gKhISsEgNAMAIMkAZKmAZKmAQAAAAAAAIDkaYAmioAmigAAAAAAAAAgaRqgiSKgiSIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKmAZ4pApooAgAAAAAAAIAmioBoqoComgAAAAAAAACgiSIgqiIgmioAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKmAZooAp4oAgAAAAAAAIAmioComoAoqgAAAAAAAACgiSYgmiogqiYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIAABwCAAAuh0JAVAUCcAIDBcSwLAAAcSdIsAABwJEvTAADA0jRRBAAAS9NEEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAADAgAMAQIAJZaDQkJUAQBQAgEExPA1gWQDLAmgaQNMAngfwPIAoAgABAAAFDgAAATZoSiwOUGjISgAgCgDAoCiWZVmeB03TNFGEpmmaKELTNE8UoWmaJooQRc8zTXii55kmTFMUTROIomkKAAAocAAACLBBU2JxgEJDVgIAIQEABkexLE/zPM8TRdNUVWia54miKIqmaaoqNM3zRFEUTdM0VRWa5nmiKIqmqaqqCk3zPFEURdNUVVWF54miKJqmaaqq68LzRFEUTdM0VdV1IYqiaJqmqaqq67pAFE3TNFVVVV0XiKJpmqaquq4sA1E0TdNUVdeVZWCaqqqqquu6sgxQTVVVVdeVZYCquqrruq4sA1RVdV3XlWUZ4Lqu68qybNsAXNd1Zdm2BQAAHDgAAAQYQScZVRZhowkXHoBCQ1YEAFEAAIAxTCmmlGFMQighNIpJCCmETEpKqZVUQUglpVIqCKmkVEpGpaWUUsoglFJSKhWEVEoqpQAAsAMHALADC6HQkJUAQB4AAEGIUowxxpyUUinGnHNOSqkUY845J6VkjDHnnJNSMsaYc85JKR1zzjnnpJSMOeecc1JK55xzzjkppZTOOeeclFJKCJ1zTkoppXPOOScAAKjAAQAgwEaRzQlGggoNWQkApAIAGBzHsjRN0zxPFDVJ0jTP8zxRNE1NsjTN8zxPFE2T53meKIqiaaoqz/M8URRF01RVriuKpmmaqqqqZFkURdE0VVV1YZqmqaqq6rowTVFUVdV1Xciyaaqq68oybNs0VdV1ZRmoqqrKriwD11VV15VlAQDgCQ4AQAU2rI5wUjQWWGjISgAgAwCAIAQhpRRCSimElFIIKaUQEgAAMOAAABBgQhkoNGRFABAnAAAgJKWCTkoloZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWTUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUklJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJJKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZQKANCNcADQfTChDBQashIASAUAAIxRijEIqcVWIcSYcxJaa61CiDHnJLSUYs+YcxBKaS22njHHIJSSWou9lM5JSa21GHsqHaOSUksx9t5LKSWl2GLsvaeQQo4txth7zzGlFlursfdeY0qx1Rhj7733GGOrsdbee+8xtlZrjgUAYDY4AEAk2LA6wknRWGChISsBgJAAAMIYpRhjzDnnnHNOSskYc85BCCGEEEopGWPMOQghhBBCKSVjzjkHIYRQQiilZMw56CCEUEIopZTOOQcdhBBCCaWUkjHnIIQQQgmllFI65yCEEEIo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"; | |
| const SECRET_OGG_BASE64 = "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C6HQkJUAQB4AAEGIUowxxpyUUinGnHNOSqkUY845J6VkjDHnnJNSMsaYc85JKR1zzjnnpJSMOeecc1JK55xzzjkppZTOOeeclFJKCJ1zTkoppXPOOScAAKjAAQAgwEaRzQlGggoNWQkApAIAGBzHsjRN0zxPFDVJ0jTP8zxRNE1NsjTN8zxPFE2T53meKIqiaaoqz/M8URRF01RVriuKpmmaqqqqZFkURdE0VVV1YZqmqaqq6rowTVFUVdV1Xciyaaqq68oybNs0VdV1ZRmoqqrKriwD11VV15VlAQDgCQ4AQAU2rI5wUjQWWGjISgAgAwCAIAQhpRRCSimElFIIKaUQEgAAMOAAABBgQhkoNGRFABAnAAAgJKWCTkoloZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWTUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUklJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJJKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZQKANCNcADQfTChDBQashIASAUAAIxRijEIqcVWIcSYcxJaa61CiDHnJLSUYs+YcxBKaS22njHHIJSSWou9lM5JSa21GHsqHaOSUksx9t5LKSWl2GLsvaeQQo4txth7zzGlFlursfdeY0qx1Rhj7733GGOrsdbee+8xtlZrjgUAYDY4AEAk2LA6wknRWGChISsBgJAAAMIYpRhjzDnnnHNOSskYc85BCCGEEEopGWPMOQghhBBCKSVjzjkHIYRQQiilZMw56CCEUEIopZTOOQcdhBBCCaWUkjHnIIQQQgmllFI65yCEEEIo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"; | |
| const REFRESH_RETURN_OGG_BASE64 = ""; // TODO: Will be a return/refresh SFX. | |
| const EXPIRE_OGG_BASE64 = ""; // TODO: Will be an expiration SFX. | |
| const SB_LOGO = "/9j/4AAQSkZJRgABAQIANgA2AAD/2wBDABoSExcTEBoXFRcdGxofJ0AqJyMjJ084PC9AXVJiYVxSWllndJR+Z22Mb1laga+CjJmepqemZHy2w7ShwZSjpp//2wBDARsdHSciJ0wqKkyfalpqn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5//wgARCAAgACADAREAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAwQAAQIF/8QAFwEAAwEAAAAAAAAAAAAAAAAAAQIDAP/aAAwDAQACEAMQAAABNeVjDYVsQGbLggUtVQKMhGnQvLZwUOQWqJ//xAAbEAACAwEBAQAAAAAAAAAAAAABEQACAxIxEP/aAAgBAQABBQLljiefGExL6ADD1zUqszrzUt3FrwZQef/EABsRAAIDAAMAAAAAAAAAAAAAAAABAhAREiAh/9oACAEDAQE/AcM6eCTJVGm6WI5V/8QAGhEAAgMBAQAAAAAAAAAAAAAAAAECEBESIf/aAAgBAgEBPwHo6NrGejawgqm/KisQxpsUBH//xAAZEAACAwEAAAAAAAAAAAAAAAAAAREgMSH/2gAIAQEABj8CphgxusoyBydP/8QAHhABAQEAAQQDAAAAAAAAAAAAAREAIRBBUWExcZH/2gAIAQEAAT8hJEdXkyU34NSzviYehBFqkhvwpkE955nfp9w84Ca8SaMTHlznIcnE1g4X1v/aAAwDAQACAAMAAAAQD/iBGlDS/8QAGhEAAwADAQAAAAAAAAAAAAAAAAERECFBMf/aAAgBAwEBPxBWsZuEqKpCiioeKEoleLMTUjG6DTg/dH//xAAZEQEBAQEBAQAAAAAAAAAAAAABEQAhURD/2gAIAQIBAT8QYY6fNEusZc0UdPWJDiWuUMhx9wNpuXJl7dU7v//EACIQAQEAAgIBAwUAAAAAAAAAAAERACExQWFRcZEQscHh8f/aAAgBAQABPxBthIrSf3G2pWF95hUCFXxi41GUDs7zY4nLPfCIVwV77/WHg0fdqN9MKAZ9l3+DGQ28ALghYuXx9I99d48YYEyiZ31gMyrRb8YcOKUdPxgK0CPTP//Z"; | |
| const HI_RES_SB_LOGO_RED_URL = "https://i.imgur.com/Mi9oWYA.jpg"; | |
| const HI_RES_SB_LOGO_YELLOW_URL = "https://i.imgur.com/jxen9bD.jpg"; | |
| const HI_RES_SB_LOGO_GREEN_URL = "https://i.imgur.com/1wZE6dN.jpg"; | |
| const rupeeSound = new Audio(`data:audio/ogg;base64,${RUPEE_OGG_BASE64}`); | |
| const itemSound = new Audio(`data:audio/ogg;base64,${ITEM_OGG_BASE64}`); | |
| const secretSound = new Audio(`data:audio/ogg;base64,${SECRET_OGG_BASE64}`); | |
| const refreshReturnSound = new Audio(`data:audio/ogg;base64,${REFRESH_RETURN_OGG_BASE64}`); | |
| const expireSound = new Audio(`data:audio/ogg;base64,${EXPIRE_OGG_BASE64}`); | |
| var submitButtons = document.querySelectorAll("button[type='submit']"); | |
| let hasWorkerSiteReturnButton = false; | |
| submitButtons.forEach( (el) => { | |
| if(el.innerText.includes("Return")) { | |
| hasWorkerSiteReturnButton = true; | |
| return; | |
| } | |
| }); | |
| var hitSubmitDetected = false; | |
| var hitSubmitDetectedTimestamp; | |
| window.addEventListener("message", function handleMessage(event) { | |
| if(event.data.hitSubmitClicked) { | |
| hitSubmitDetected = true; | |
| hitSubmitDetectedTimestamp = new Date(); | |
| } | |
| }); | |
| var hitForm = document.querySelector("form[name='hitForm']"); | |
| if(hitForm) { | |
| hitForm.addEventListener("submit", function handleHitFormSubmit(event) { | |
| if(!hitSubmitDetected) { | |
| hitSubmitDetected = true; | |
| hitSubmitDetectedTimestamp = new Date(); | |
| } | |
| }); | |
| } | |
| if (Boolean(document.querySelector("img[src='/media/return_hit.gif']")) || hasWorkerSiteReturnButton) { | |
| var startTime; | |
| if(performance.timing === undefined) { | |
| if(unsafeWindow.pageTimes === undefined) { | |
| startTime = new Date(); | |
| } | |
| else { | |
| startTime = unsafeWindow.pageTimes.beginPageLoad; | |
| } | |
| } | |
| else { | |
| startTime = performance.timing.navigationStart; | |
| } | |
| window.addEventListener('beforeunload', doAtHitEnd); | |
| if(window.location.href.includes("worker.mturk")) { | |
| window.addEventListener("message", function handleHitOverMessage(event) { | |
| if(event.data) { | |
| if(event.data.hitIsOver) { | |
| doAtHitEnd(); | |
| } | |
| } | |
| }); | |
| } | |
| } | |
| function secondsToMMSSString(seconds) { | |
| let minutes = Math.floor(seconds / 60); | |
| let spareSeconds = Math.floor(seconds - (minutes * 60)); | |
| return `${minutes.toLocaleString("US", {minimumIntegerDigits: 2, maximumFractionDigits: 0})}:${spareSeconds.toLocaleString("US", {minimumIntegerDigits: 2, maximumFractionDigits: 0})}`; | |
| } | |
| let completionStatsData = localStorage.getItem(completionDBKey); | |
| let completionStats; | |
| if(completionStatsData) { | |
| completionStats = JSON.parse(completionStatsData); | |
| } | |
| let sprintData = GM_getValue("sprintData"); | |
| let sprintObject; | |
| if(sprintData) { | |
| sprintObject = JSON.parse(sprintData); | |
| } | |
| else { | |
| sprintObject = {totalWageUsd: 0, createTime: Number(startTime), lastSubmit: Number(startTime)}; | |
| } | |
| function doAtHitEnd(){ | |
| let hitIsExpired = false; | |
| // TODO: | |
| // Start of new timer measurement method before I decided to just cut the cord and not worry about expires since they don't automatically move to the next HIT in queue. | |
| /* | |
| var workerTimer = document.querySelector("span[data-react-class*='reactComponents/common/CompletionTimer'] span:last-of-type"); | |
| var timerMMSS = workerTimer.innerText.match(/(\d+):(\d+)\b/); | |
| */ | |
| /* | |
| var wwwTimer = document.querySelector("#theTime"); | |
| var countdownTimer; | |
| if(!isWorkerSite) { | |
| countdownTimer = wwwTimer; | |
| } | |
| else { | |
| countdownTimer = workerTimer; | |
| } | |
| if(Number(countdownTimer.innerText.replace(":","").trim()) === 0) { | |
| hitIsExpired = true; | |
| } | |
| */ | |
| var unloadTimestamp = new Date(); | |
| var seconds = Number((unloadTimestamp - startTime) / 1000); | |
| var reward; | |
| if(isWorkerSite) { | |
| // reward = Number(document.querySelectorAll(".detail-bar-value")[0].innerText.trim().replace("$","")); | |
| reward = reactJson.modalOptions.monetaryReward.amountInDollars; | |
| } | |
| else { | |
| reward = Number(document.querySelector(".capsule_field_text .reward").innerText.trim().replace("$", "")); | |
| } | |
| if(document.querySelector("#bonusWageCents")) { | |
| // Terribly-named input, since it's actually bonus wage in dollars. | |
| // But the name already has momentum and other scripts built around it. | |
| reward += Number(document.querySelector("#bonusWageCents").value); | |
| } | |
| var wage = reward * 3600 / seconds; | |
| var pageloadLostWage; | |
| var pageCompleteLostWage; | |
| var submitTimeLostWage; | |
| var pageloadElement = document.querySelector("#timeLostToPageLoad"); | |
| var pageCompleteElement = document.querySelector("#timeLostToFullPageLoad"); | |
| if(pageloadElement) { | |
| const completionTimeMinusLoadTime = seconds - ( Number(pageloadElement.innerText) / 1000); | |
| const zeroLoadTimeWage = reward * 3600 / ( completionTimeMinusLoadTime ); | |
| pageloadLostWage = zeroLoadTimeWage - wage; | |
| } | |
| if(pageCompleteElement) { | |
| const completionTimeMinusPageCompleteTime = seconds - ( Number(pageCompleteElement.innerText) / 1000); | |
| const wageWithoutWaitingForResources = reward * 3600 / ( completionTimeMinusPageCompleteTime ); | |
| pageCompleteLostWage = wageWithoutWaitingForResources - wage; | |
| } | |
| if(hitSubmitDetected || DEBUG_FAKE_SUBMIT_DETECTION) { | |
| if(DEBUG_FAKE_SUBMIT_DETECTION) { | |
| hitSubmitDetectedTimestamp = Number(unloadTimestamp) + 1; | |
| } | |
| const submitTimeLost = unloadTimestamp - hitSubmitDetectedTimestamp; | |
| const completionTimeMinusSubmitTime = seconds - ( submitTimeLost / 1000); | |
| const wageWithoutWaitingForSubmit = reward * 3600 / ( completionTimeMinusSubmitTime ); | |
| submitTimeLostWage = wageWithoutWaitingForSubmit - wage; | |
| let timeSinceLastSprintSubmit = Number(Date.now()) - sprintObject.lastSubmit; | |
| if(timeSinceLastSprintSubmit > SPRINT_TIMEOUT_MILLISECONDS) { | |
| sprintObject = {totalWageUsd: 0, createTime: startTime, lastSubmit: Number(Date.now())}; | |
| GM_setValue("sprintData", JSON.stringify(sprintObject)); | |
| } | |
| sprintObject.lastSubmit = Number(Date.now()); | |
| sprintObject.totalWageUsd += reward; | |
| GM_setValue("sprintData", JSON.stringify(sprintObject)); | |
| if(!completionStats) { | |
| window.localStorage.setItem(completionDBKey, JSON.stringify({numberOfHITs: 1, hourlyWageUsd: wage, totalAmount: reward, totalTimeSeconds: seconds, requesterName: reactJson.modalOptions.requesterName, hitTitle: reactJson.modalOptions.projectTitle})); | |
| } | |
| else { | |
| let newTotalAmount = completionStats.totalAmount + reward; | |
| let newTotalTimeSeconds = completionStats.totalTimeSeconds + seconds; | |
| let newWage = newTotalAmount * 3600 / newTotalTimeSeconds; | |
| window.localStorage.setItem(completionDBKey, JSON.stringify({numberOfHITs: completionStats.numberOfHITs + 1, hourlyWageUsd: newWage, totalAmount: newTotalAmount, totalTimeSeconds: newTotalTimeSeconds,requesterName: reactJson.modalOptions.requesterName, hitTitle: reactJson.modalOptions.projectTitle})); | |
| } | |
| } | |
| let wageColor; | |
| let soundToPlay; | |
| if(wage >= WAGE_HIGH) { | |
| wageColor = "green"; | |
| soundToPlay = secretSound; | |
| } | |
| else if(wage >= WAGE_MED) { | |
| wageColor = "yellow"; | |
| soundToPlay = itemSound; | |
| } | |
| else { | |
| wageColor = "red"; | |
| soundToPlay = rupeeSound; | |
| } | |
| if(PLAY_SFX_ON_SUBMIT_EXPIRE_RETURN_REFRESH) { | |
| soundToPlay.play(); | |
| } | |
| let sprintLengthMs = sprintObject.lastSubmit - sprintObject.createTime; | |
| let sprintSeconds = sprintLengthMs / 1000; | |
| let sprintWage = sprintObject.totalWageUsd * 3600 / sprintSeconds; | |
| let timeSinceLastSprintSubmit; | |
| let sprintTotalIfSubmitted; | |
| let sprintHourlyIfSubmitted; | |
| let sprintHourlyLossBecauseNotSubmitted; | |
| if(!hitSubmitDetected) { | |
| let timeSinceLastSprintSubmit = Number(Date.now()) - sprintObject.lastSubmit; | |
| sprintTotalIfSubmitted = sprintObject.totalWageUsd + reward; | |
| sprintHourlyIfSubmitted = sprintTotalIfSubmitted * 3600 / (sprintSeconds + timeSinceLastSprintSubmit / 1000); | |
| sprintHourlyLossBecauseNotSubmitted = sprintHourlyIfSubmitted - sprintWage; | |
| } | |
| if(USE_ARDUINO_SERVER) { | |
| // Tampermonkey -> Local Node -> Arduino | |
| GM_xmlhttpRequest({ | |
| method: "GET", | |
| url: `http://127.0.0.1:9001/`+ | |
| `?onscreen=`+ | |
| `^~~ QLast HIT~~`+ | |
| `X\$/hr ${(wageColor === "green" ? "X" : (wageColor === "yellow" ? "Q" : "Z"))}${wage.toFixed(2)}~`+ | |
| `ZLoad -${(pageloadLostWage || 0).toFixed(2)}~`+ | |
| `Full -${(pageCompleteLostWage || 0).toFixed(2)}~`+ | |
| `Sub -${(submitTimeLostWage || 0).toFixed(2)}`+ | |
| ``, | |
| onload: function(response) {} | |
| }); | |
| } | |
| document.body.insertAdjacentHTML('afterend', `<div id='wageWrapper'>` + | |
| `<div id='wage'>${hitSubmitDetected ? `$${wage.toFixed(2)}` : `-$${sprintHourlyLossBecauseNotSubmitted.toFixed(2).replace("-", "")}`}/hr.</div>` + | |
| `<div id='timeLossesDisplayPageload'>Pageload: <span style="color:red;">-\$${(pageloadLostWage || 0).toFixed(2)}</span></div>` + | |
| `<div id='timeLossesDisplayPageComplete'>Complete: <span style="color:red;">-\$${(pageCompleteLostWage || 0).toFixed(2)}</span></div>` + | |
| `<div id='timeLossesSubmit'>Submit: <span style="color:red;">-\$${(submitTimeLostWage || 0).toFixed(2)}</span></div>` + | |
| `</div>`); | |
| document.querySelector("#wageWrapper").style = `` + | |
| `position: fixed;` + | |
| `width: 100%;` + | |
| `height: 100%;` + | |
| `top: 0px;` + | |
| `left: 0px;` + | |
| `background-color: rgba(0,0,0,0.8);`; | |
| document.querySelector("#wage").style = `` + | |
| `position: absolute;` + | |
| `top: 50%;` + | |
| `font-size: 100px;` + | |
| `font-weight: bold;` + | |
| `font-family: monospace;` + | |
| `color: ${hitSubmitDetected ? wageColor : "gray"};` + | |
| `width: 100%;` + | |
| `text-align: center;`; | |
| document.querySelector("#timeLossesDisplayPageload").style = `` + | |
| `position: absolute;` + | |
| `font-size: 36px;` + | |
| `bottom: 50px;` + | |
| `left: 0px;` + | |
| `font-weight: bold;` + | |
| `font-family: monospace;` + | |
| `color: gray;` + | |
| `text-align: center;`; | |
| document.querySelector("#timeLossesDisplayPageComplete").style = `` + | |
| `position: absolute;` + | |
| `font-size: 36px;` + | |
| `bottom: 50px;` + | |
| `left: 50%;` + | |
| `margin-left: -25%;` + | |
| `width: 50%;` + | |
| `font-weight: bold;` + | |
| `font-family: monospace;` + | |
| `color: gray;` + | |
| `text-align: center;`; | |
| document.querySelector("#timeLossesSubmit").style = `` + | |
| `position: absolute;` + | |
| `font-size: 36px;` + | |
| `bottom: 50px;` + | |
| `right: 0px;` + | |
| `font-weight: bold;` + | |
| `font-family: monospace;` + | |
| `color: gray;` + | |
| `text-align: center;`; | |
| /* | |
| var notifyFinalWage = new Notification( | |
| `${hitSubmitDetected ? "HIT COMPLETE!" : ( hitIsExpired ? "HIT EXPIRED..." : "HIT RETURNED/REFRESHED." )}`, { | |
| body: `${(wwwSiteHitName.length > HIT_SITE_NAME_NOTIFICATION_MAX_CHARS ? wwwSiteHitName.substr(0,HIT_SITE_NAME_NOTIFICATION_MAX_CHARS) + "..." : wwwSiteHitName)}\n`+ | |
| `Load loss: -\$${(pageloadLostWage || 0).toFixed(2)}/hr.\n`+ | |
| `w/ resources: -\$${(pageCompleteLostWage || 0).toFixed(2)}/hr.\n`+ | |
| `Submit loss: -\$${(submitTimeLostWage || 0).toFixed(2)}/hr.\n`+ | |
| `FINAL WAGE: \$${wage.toFixed(2)}/hr.`, | |
| icon: `data:image/jpeg;base64,${SB_LOGO}` | |
| }); | |
| */ | |
| var notificationDetails = { | |
| title: `${hitSubmitDetected ? "HIT COMPLETE!" : ( hitIsExpired ? "HIT EXPIRED..." : "HIT UNLOAD." )} (${secondsToMMSSString(seconds)})`, | |
| text: `${(wwwSiteHitName.length > HIT_SITE_NAME_NOTIFICATION_MAX_CHARS ? wwwSiteHitName.substr(0,HIT_SITE_NAME_NOTIFICATION_MAX_CHARS) + "..." : wwwSiteHitName)}\n`+ | |
| `Load loss: -\$${(pageloadLostWage || 0).toFixed(2)}/hr.\n`+ | |
| `w/ resources: -\$${(pageCompleteLostWage || 0).toFixed(2)}/hr.\n`+ | |
| `Submit loss: -\$${(submitTimeLostWage || 0).toFixed(2)}/hr.\n`+ | |
| `HIT: \$${wage.toFixed(2)}/hr. SET: $${sprintWage.toFixed(2)}/hr. ($${sprintObject.totalWageUsd.toFixed(2)} / ${secondsToMMSSString(sprintSeconds)})`, | |
| image: `${hitSubmitDetected ? HI_RES_SB_LOGO_GREEN_URL : ( hitIsExpired ? HI_RES_SB_LOGO_RED_URL : HI_RES_SB_LOGO_YELLOW_URL )}`, | |
| timeout: (seconds * SECONDS_TO_MILLISECONDS_MULTIPLER) / NOTIFICATION_DISPLAY_TIME_RATIO_DIVIDER | |
| }; | |
| GM_notification(notificationDetails); | |
| // Close this tab if it should be closed. | |
| if(window.name.toLowerCase().includes("fanout")) {window.close();} | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment