[Www] [Worker] No HIT Reloader

Reloads pages automatically if no HIT is loaded for provided Group Ids

当前为 2017-11-14 提交的版本,查看 最新版本

// ==UserScript==
// @name         [Www] [Worker] No HIT Reloader
// @namespace    https://github.com/Kadauchi
// @version      2.1.0
// @description  Reloads pages automatically if no HIT is loaded for provided Group Ids
// @author       Kadauchi
// @icon         http://i.imgur.com/oGRQwPN.png
// @include      https://worker.mturk.com/*
// @include      /^https://www\.mturk\.com/mturk/(accept|preview|previewandaccept)/
// @grant        GM_getTab
// @grant        GM_saveTab
// ==/UserScript==

function www() {
    const GROUP_IDS = JSON.parse(localStorage.getItem(`GROUP_IDS`)) || {};
    const group_id = window.location.href.split(`groupId=`)[1].split(`&`)[0];

    function RELOAD () {
        if (GROUP_IDS[group_id] && !document.getElementsByName(`isAccepted`)[0]) setTimeout(function () { window.location.reload(); }, 500);
    }

    if (!document.getElementById(`alertBox`)) return RELOAD();

    document.getElementById(document.getElementsByClassName(`message success`)[0] ? `alertboxMessage` : `alertboxHeader`).insertAdjacentHTML(
        `beforebegin`,
        `<span style="float: right">` +
        `  <label><b>Auto Reload If No HIT?</b> <input id="auto_reload" type="checkbox" ${GROUP_IDS[group_id] ? `checked` : ``}></label>` +
        `</span>`
    );

    document.getElementById(`auto_reload`).addEventListener(`change`, function () {
        GROUP_IDS[group_id] = document.getElementById(`auto_reload`).checked;
        localStorage.setItem(`GROUP_IDS`, JSON.stringify(GROUP_IDS));

        RELOAD();
    });

    RELOAD();
}

function worker() {
    GM_getTab((tab) => {
        const gid = location.href.match(/projects\/([A-Z0-9]+)/) ? location.href.match(/projects\/([A-Z0-9]+)/)[1] : null;
        const gids = localStorage.NHR_gids ? JSON.parse(localStorage.NHR_gids) : {};

        let timeout = null;

        const reloader = () => {
            if (!gid && gids[tab.gid]) {
                timeout = setTimeout(() => {
                    window.location.replace(`https://worker.mturk.com/projects/${tab.gid}/tasks/accept_random`);
                }, 500);
            }
            else {
                clearTimeout(timeout);
            }
        };

        if (location.href.indexOf(`https://worker.mturk.com/projects`) !== -1) {
            if (gid) {
                tab.gid = gid;
            }
            else {
                reloader();
            }

            if (tab.gid) {
                const button = document.createElement(`button`);
                button.title = `Auto Reload ${tab.gid} If No HIT?`;
                button.className = `m-l-sm fa fa-refresh btn ${gids[tab.gid] ? `btn-success` : `btn-default`}`;
                button.addEventListener(`click`, (event) => {
                    button.classList.toggle(`btn-success`);
                    button.classList.toggle(`btn-default`);

                    gids[tab.gid] = button.classList.contains(`btn-success`);
                    localStorage.NHR_gids = JSON.stringify(gids);

                    reloader();
                });

                document.getElementsByClassName(`navbar-content`)[0].appendChild(button);
            }
        }
        else {
            tab.gid = undefined;
        }

        GM_saveTab(tab);
    });
}

if (location.href.indexOf(`https://worker.mturk.com/`) !== -1) worker(); else www();