您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Export HIT information for IRC chat
当前为
// ==UserScript== // @name IRC Export (reformatted output mod) // @description Export HIT information for IRC chat // @version 3.2c // @include https://www.mturk.com/mturk/findhits* // @include https://www.mturk.com/mturk/viewhits* // @include https://www.mturk.com/mturk/sorthits* // @include https://www.mturk.com/mturk/searchbar*selectedSearchType=hitgroups* // @include https://www.mturk.com/mturk/viewsearchbar*selectedSearchType=hitgroups* // @include https://www.mturk.com/mturk/sortsearchbar*HITGroup* // @include https://www.mturk.com/mturk/preview* // @grant GM_setClipboard // @author Cristo + clickhappier // @namespace mturkgrind // ==/UserScript== // modified by clickhappier to reformat output in more logical ordering/separating/labeling, // since I thought it was unnecessarily unclear to read with the separators in the middle of each // type of information (label, value, separator, relevant url) instead of between the different types, // and wanted to be clearer about what the TO values represented; // also wanted to remove unnecessary linebreaks in the output that caused it to spread one HIT's info // across several IRC comments, which made it hard to tell where one HIT's info stopped and another began // (though after the version I initially modified, Cristo did later do away with all but one linebreak); // also fixed Amazon fiddling with HIT name cell contents after Oct 20, 2014 change; // also fixed Turkopticon mirror API domain to keep working after Oct 27, 2014 change var caps = document.getElementsByClassName('capsulelink'); for (var c = 0; c < caps.length/2; c++){ button = document.createElement('button'); button.setAttribute("place",c); button.textContent = 'IRC'; button.style.height = '14px'; button.style.width = '30px'; button.style.fontSize = '8px'; button.style.border = '1px solid'; button.style.padding = '0px'; button.style.backgroundColor = 'transparent'; button.title = 'Click to save Hit information to your clipboard'; button.addEventListener("click", display, false); document.getElementById('capsule'+c+'-0').parentNode.appendChild(button); } function getTO(f){ var toComp = []; var toUrl = 'https://mturk-api.istrack.in/multi-attrs.php?ids='+f; requestTO = new XMLHttpRequest(); requestTO.onreadystatechange = function () { if ((requestTO.readyState ===4) && (requestTO.status ===200)) { if(requestTO.responseText.split(':').length > 2){ var toInfo = requestTO.responseText.split('{')[3].split('}')[0].split(','); for (var t = 0; t < 3; t++){ var arrTo = toInfo[t].split(':'); toComp.push(arrTo[1].substring(1,4)); } } else { toComp = ['-','-','-']; } } } requestTO.open('GET', toUrl, false); requestTO.send(null); return toComp; } function tinyURL(url){ var shortRes; var urlG = "https://www.googleapis.com/urlshortener/v1/url"; var gimmieG = new XMLHttpRequest(); gimmieG.open("POST", urlG, false); gimmieG.setRequestHeader("Content-Type", "application/json"); gimmieG.onreadystatechange = function (event) { if (gimmieG.readyState == 4) { var title = "Google URL Shortener"; if (gimmieG.status == 200) { shortRes = JSON.parse(gimmieG.response).id; } else { console.log('nothing'); } } } var data = new Object(); data.longUrl = url; gimmieG.send(JSON.stringify(data)); if ( shortRes == undefined ) { // if your IP reached the Google URL shortener's temporary usage limits shortRes = "(link unavailable)"; } return shortRes; } function display(e){ var theButton = e.target; theButton.style.backgroundColor = '#CC0000'; setTimeout(function(){theButton.style.backgroundColor = 'transparent';},600); var capHand = document.getElementById('capsule'+theButton.getAttribute("place")+'-0'); var tBodies = capHand.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode; var capReq = tBodies.getElementsByClassName('requesterIdentity')[0].textContent; var capReqId = tBodies.getElementsByClassName('requesterIdentity')[0].parentNode.href.split('requesterId=')[1]; var capTitle = capHand.textContent.trim(); capTitle = capTitle.replace(/<(\w+)[^>]*>.*<\/\1>/gi, "").trim(); // addition to strip html tags and their contents, appearing inside the title link (re 10-20-2014 appearance of "<span class="tags"></span>") var capGId = 'unavailable'; // handle logged-out export requests for HITs with no preview/notqualified links if ( capHand.parentNode.parentNode.getElementsByClassName('capsulelink')[1].firstChild.nextSibling.href != '' ) { // if hit has a preview/notqualified link capGId = capHand.parentNode.parentNode.getElementsByClassName('capsulelink')[1].firstChild.nextSibling.href.split('=')[1]; capGId = capGId.replace("&hitId", ""); // Amazon messed up the notqualified links, now looking like https://www.mturk.com/mturk/notqualified?hitGroupId=3ID43DSF4IQ1X8LO308D15ZSD5J5GX&hitId=3ID43DSF4IQ1X8LO308D15ZSD5J5GX ; this and the above split happening on = instead of a specific value address that } var capRew = tBodies.getElementsByClassName('reward')[0].textContent; var capTime = tBodies.getElementsByClassName('capsule_field_text')[2].textContent; var capAvailable = tBodies.getElementsByClassName('capsule_field_text')[4].textContent; var qualList = document.getElementById('capsule'+theButton.getAttribute("place")+'target').getElementsByTagName('tbody')[2]; var qualColl = qualList.getElementsByTagName('td'); var qualStart = 3; if ( document.getElementById('lnkWorkerSignin') ) { qualStart = 1; } // handle logged-out export requests - difference in qual table coding var masterStat = ''; for ( var m = qualStart; m < qualColl.length; m++ ) { if ( qualColl[m].textContent.indexOf('Masters') > -1 ) { masterStat = 'MASTERS '; } } var capUrl = tinyURL('https://www.mturk.com/mturk/preview?groupId='+capGId); var capReqUrl = tinyURL('https://www.mturk.com/mturk/searchbar?selectedSearchType=hitgroups&requesterId='+capReqId); var hitLinkUnav = ''; if ( capGId == 'unavailable' ) { capUrl = capReqUrl; hitLinkUnav = " (preview link unavailable)"; } // handle logged-out export requests for HITs with no preview/notqualified links var toLink = tinyURL('http://turkopticon.ucsd.edu/'+capReqId); var capToStats = getTO(capReqId); var exString = masterStat + 'Requester: ' + capReq + ' ' + capReqUrl + ' • ' + 'HIT: ' + capTitle + ' ' + capUrl + hitLinkUnav + ' • ' + 'Pay: ' + capRew + ' • ' + 'Avail: ' + capAvailable + ' • ' + 'Time Limit: ' + capTime + ' • ' + 'TO: ' + 'Pay='+capToStats[1] + ' Fair='+capToStats[2] + ' Comm='+capToStats[0] + ' ' + toLink ; GM_setClipboard(exString); }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址