Web+Panda Results in Google

.

// ==UserScript==
// @name         Web+Panda Results in Google
// @namespace    salembeats
// @version      1.2
// @description  .
// @author       Cuyler Stuwe (salembeats)
// @include      /https:\/\/www.google.com\/search(?:.*?)[?&]q=3[A-Za-z0-9]{29}(?:[/?&]|\b)/
// @include      /https:\/\/www.google.com\/search(?:.*?)[?&]q=A(?:[A-Za-z0-9]{11,13}|[A-Za-z0-9]{20})(?:[/?&]|\b)/
// @require      https://greasyfork.org/scripts/36173-panda-crazy-helper-emulation/code/Panda%20Crazy%20Helper%20Emulation.js
// @grant        none
// ==/UserScript==

// https://turkopticon.info/requesters/A25EIGL5N7278I


function insertNewContent(gid, rid) {

	var gidHTML = `
        <div>
            <div>
                <span class="results-title">Results for mTurk HIT Set ID ("Group ID / GID")</span> <span class="gid-rid">${gid}</span>
            </div>
            <div>
                <span><a target="_new" href="web+panda://${gid}">web+panda:// (without metadata)</a> </span>
                <span><a target="_new" href="https://worker.mturk.com/projects/${gid}/tasks/accept_random">Standard "Accept" Link</a> </span>
                <span><a target="_new" href="javascript:void(0)" id="add-to-pc">Add to PC</a> </span>
                <span><a target="_new" href="javascript:void(0)" id="add-to-pc-once">Add to PC (ONCE)</a> </span>
            </div>
        </div>`;

	var ridHTML = `
        <div>
            <div>
                <span class="results-title">Results for mTurk Requester ID ("RID")</span> <span class="gid-rid">${rid}</span>
            </div>
            <div>
                <span><a target="_new" href="https://turkopticon.ucsd.edu/reports?id=${rid}">Find on TO</a> </span>
                <span><a target="_new" href="https://turkopticon.info/requesters/${rid}">Find on TO2</a> </span>
                <span><a target="_new" href="https://turkerview.com/requesters/${rid}">Find on TurkerView</a></span>
            </div>
        </div>`;

	(document.querySelector("div.g") || document.querySelector("#topstuff")).insertAdjacentHTML("beforebegin", `
        <style>
            #resultsChanger {

            }

            #resultsChanger a::after {
                content: " ?";
            }

            #resultsChanger>div>div {
                margin: 10px !important;
            }

            .results-title {
                font-size: 1.3em;
            }

            .results-title::before {
                content: "⭐ ";
            }

            .gid-rid {
                font-size: 1.3em;
                color: green;
                background: white;
            }
        </style>

        <div id="resultsChanger" class="g">
            ${ gid ? gidHTML : ""}
            ${ rid ? ridHTML : ""}
        </div>
    `);

}


function main() {

	var parsedURL = new URL(window.location.href);
	var searchQuery = parsedURL.searchParams.get("q");

	let gid = (searchQuery.match(/\b3[A-Za-z0-9]{29}\b/) || [null])[0];
	let rid = (searchQuery.match(/\bA(?:[A-Za-z0-9]{11,13}|[A-Za-z0-9]{20})\b/) || [null])[0];

	insertNewContent(gid, rid);

	document.body.addEventListener("click", e => {
		if(e.target.id === "add-to-pc") {
			PandaCrazy.addJob(gid);
			document.getElementById("add-to-pc").innerText = "Added to PC (if running)!";
		}
		else if(e.target.id === "add-to-pc-once") {
			const PC_ADD_ONCE = true;
			document.getElementById("add-to-pc").innerText = "Added to PC (ONCE) (if running)!";
			PandaCrazy.addJob(gid, PC_ADD_ONCE);
		}
	});
}


main();