Last active
May 3, 2018 19:29
-
-
Save cuylerstuwe/c996728270b2d6ab8068c0053dccc722 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 Simple Panda Crazy Helper web+panda:// Handler (Unofficial Proof of Concept) | |
| // @namespace salembeats | |
| // @version 3.4 | |
| // @description Unofficial web+panda:// handler for Panda Crazy, implemented as a working proof of concept. Latest update: Changed from GreasyFork import to GitHub Gist import. | |
| // @author Cuyler Stuwe (salembeats) | |
| // @include *worker.mturk.com/registerPCHwebpanda | |
| // @include *worker.mturk.com/handlePCHwebpanda* | |
| // @grant window.close | |
| // @require https://gist.github.com/salembeats/3b5c664709dd46f41ac2d4ad740bf02b/raw/e9e666adc3cb9a5e273c4681dbbbedf115e8fc83/panda-crazy-helper-emulation.library.user.js | |
| // ==/UserScript== | |
| const SHOULD_PLAY_SOUND = false; | |
| const SHOULD_CLOSE_AT_END_IF_NO_ERRORS = true; | |
| const SHOULD_CLOSE_AT_END_IF_PANDA_CRAZY_NOT_RUNNING = true; | |
| const SHOULD_TRY_TO_START_PC_IF_NOT_DETECTED = true; | |
| const SHOULD_CLOSE_OPENED_WINDOWS_ON_CLOSE = false; | |
| const PANDA_CRAZY_WAIT_FOR_STARTUP_TIME = 3000; | |
| const SUCCESS_SFX_BASE64 = "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"; | |
| const SFX_OGG_BASE64_PREFIX = "data:audio/ogg;base64,"; | |
| const startedSound = new Audio(`${SFX_OGG_BASE64_PREFIX}${SUCCESS_SFX_BASE64}`); | |
| var openedPandaCrazyInstanceHandle; | |
| startedSound.addEventListener("ended", e => { | |
| if(SHOULD_CLOSE_AT_END_IF_NO_ERRORS) { | |
| closeWindowAndAnyOpenedWindows(); | |
| } | |
| }); | |
| function closeWindowAndAnyOpenedWindows() { | |
| window.close(); | |
| if(openedPandaCrazyInstanceHandle && SHOULD_CLOSE_OPENED_WINDOWS_ON_CLOSE) { | |
| openedPandaCrazyInstanceHandle.close(); | |
| } | |
| } | |
| function addNewHTML(html) { | |
| document.body.insertAdjacentHTML("beforeend", html); | |
| } | |
| function clearPage() { | |
| document.body.innerHTML = ""; | |
| document.head.innerHTML = ""; | |
| } | |
| function embedNewStyles() { | |
| document.head.insertAdjacentHTML("afterbegin", ` | |
| <style> | |
| div { | |
| margin: 5px; | |
| } | |
| div::before { | |
| content: "Message: "; | |
| color: orange; | |
| } | |
| </style> | |
| `); | |
| } | |
| function isOnProtocolRegistrationURL() { | |
| return window.location.href.includes("worker.mturk.com/registerPCHwebpanda"); | |
| } | |
| function validateGID(gid) { | |
| if(gid.length >= 30) { | |
| return gid.match(/3(?:[A-Za-z0-9]{29})/)[0].toUpperCase(); | |
| } | |
| else { | |
| return null; | |
| } | |
| } | |
| function checkWhetherPandaCrazyIsRunning() { | |
| // TODO: Actually check whether Panda Crazy is running. | |
| return true; | |
| } | |
| function handlerActivate() { | |
| addNewHTML(`<div>Running web+panda:// proof of concept for Panda Crazy Helper.</div>`); | |
| let url; | |
| try { | |
| url = decodeURIComponent(new URL(document.location).searchParams.get("url")); | |
| } | |
| catch(err) { | |
| return; // Don't even run the script if the URL is too malformed to parse properly. | |
| } | |
| let extractedWebPandaURL = new URL(url); | |
| let gid = extractedWebPandaURL.href | |
| .replace(`${extractedWebPandaURL.protocol}`,"") | |
| .replace("//", "") | |
| .replace(extractedWebPandaURL.search,""); | |
| let validatedGID = validateGID(gid); | |
| if(validatedGID) { | |
| let once = Boolean(extractedWebPandaURL.searchParams.get("once") || (extractedWebPandaURL.searchParams.get("batchOrSurvey") && extractedWebPandaURL.searchParams.get("batchOrSurvey") === "survey")); | |
| let rid = extractedWebPandaURL.searchParams.get("rid") || undefined; | |
| let hitTitle = extractedWebPandaURL.searchParams.get("hitTitle") || undefined; | |
| let hitDescription = extractedWebPandaURL.searchParams.get("hitDescription") || undefined; | |
| let hitValue = extractedWebPandaURL.searchParams.get("hitValue") || undefined; | |
| let requesterName = extractedWebPandaURL.searchParams.get("requesterName") || undefined; | |
| // TODO: Actually check whether Panda Crazy is running. | |
| let isPandaCrazyRunning = checkWhetherPandaCrazyIsRunning(); | |
| if(isPandaCrazyRunning) { | |
| PandaCrazy.addJob(validatedGID, once, { | |
| rid, | |
| hitTitle, | |
| requesterName, | |
| hitValue, | |
| hitDescription | |
| }); | |
| if(SHOULD_PLAY_SOUND) {startedSound.play();} | |
| addNewHTML(`<div>Sent a Panda Crazy Helper message to add GID ${validatedGID} to Panda Crazy${(once ? " (only once)" : "" )}.</div>`); | |
| if(SHOULD_CLOSE_AT_END_IF_NO_ERRORS) { | |
| if(SHOULD_PLAY_SOUND) { | |
| } else { | |
| closeWindowAndAnyOpenedWindows(); | |
| } | |
| } | |
| } | |
| else { | |
| addNewHTML(`<div>Panda Crazy is not running. No action taken.</div>`); | |
| if(SHOULD_CLOSE_AT_END_IF_PANDA_CRAZY_NOT_RUNNING) {window.close();} | |
| } | |
| } | |
| else { | |
| addNewHTML(`<div>GID "${gid}" was not valid. No action taken.</div>`); | |
| } | |
| } | |
| function startPandaCrazy(settings = { }) { | |
| const NO_WINDOW_NAME_NEEDED = undefined; | |
| if(Object.keys(settings).length === 0) { | |
| settings.width = screen.availWidth / 2; | |
| settings.height = screen.availHeight / 2; | |
| settings.left = (screen.availWidth / 2) - (settings.width / 2); | |
| settings.top = (screen.availHeight / 2) - (settings.height / 2); | |
| } | |
| openedPandaCrazyInstanceHandle = window.open("https://worker.mturk.com/requesters/PandaCrazy/projects", | |
| NO_WINDOW_NAME_NEEDED, | |
| `width=${settings.width},height=${settings.height},left=${settings.left},top=${settings.top}`); | |
| } | |
| function main() { | |
| clearPage(); | |
| embedNewStyles(); | |
| if(isOnProtocolRegistrationURL()) { | |
| addNewHTML(`<div>Check for a notification or an icon in the URL bar to allow this page to handle web+panda:// links.</div>`); | |
| navigator.registerProtocolHandler("web+panda", | |
| "https://worker.mturk.com/handlePCHwebpanda?url=%s", | |
| "Web Panda Handler (Panda Crazy)"); | |
| } | |
| else if(SHOULD_TRY_TO_START_PC_IF_NOT_DETECTED) { | |
| addNewHTML(`<div>Checking whether Panda Crazy is running...</div>`); | |
| PandaCrazy.online().then( | |
| initialSuccessResponse => { | |
| handlerActivate(); | |
| }, | |
| initialFailureResponse => { | |
| addNewHTML(`<div>Panda Crazy not detected. Attempting to start Panda Crazy...</div>`); | |
| startPandaCrazy(); | |
| setTimeout(() => { | |
| PandaCrazy.online().then( | |
| secondSuccessResponse => { | |
| handlerActivate(); | |
| }, | |
| secondFailureResponse => { | |
| alert("Panda Crazy is not installed, could not be started, or did not respond in time."); | |
| closeWindowAndAnyOpenedWindows(); | |
| }); | |
| }, PANDA_CRAZY_WAIT_FOR_STARTUP_TIME); | |
| }); | |
| } | |
| else { | |
| handlerActivate(); | |
| } | |
| } | |
| main(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment