🏠 Home 

CrowdSource: Search Image URL

Click the search button to begin. Then simply click on the matching image in the google results.


Install this script?
// ==UserScript==
// @name         CrowdSource: Search Image URL
// @version      0.9
// @namespace    localhost
// @description  Click the search button to begin. Then simply click on the matching image in the google results.
// @copyright    2013+, John Stoehr, Tjololo12, modified for Image URL Hits by BenWo
// ------------------------------------------------------------------------------------
// @match        https://work.crowdsource.com/amt/view*
// @match        https://www.google.com/search*
// @match        https://www.google.co.uk/search*
// @run-at       document-end
// @require      http://code.jquery.com/jquery-2.1.0.js
// @require      https://greasyfork.org/scripts/2352-parseuri-license/code/parseuri%20license.js?version=6261
// ==/UserScript==
// Source: http://stackoverflow.com/a/4673436/2405722
String.prototype.format = function() {
var args = arguments;
return this.replace(/\{(\d+)\}/g, function(match, number) {
return args[number] !== undefined ? args[number] : match;
});
};
var mturkOrigins = ["https://work.crowdsource.com/amt/view"];
var googlePrefix="https://www.google.com/search?tbm=isch&q=site:";
var numTasks = 0;
function isMturkOrigin(url) {
for (var i = 0; i < mturkOrigins.length; ++i) {
if (url.indexOf(mturkOrigins[i]) === 0) {
return true;
}
}
return false;
}
function sleep(ms) {
var start = new Date().getTime(), expire = start + ms;
while (new Date().getTime() < expire) { }
return;
}
if (isMturkOrigin(location.href)) {
$('label[for^=Url]').each(
function() {
numTasks++;
$(this).append(
$("<button></button>", {
type: "button",
text: "Search "+numTasks
}).click(function() {
var $task = $(this).parent().parent().prev().prev().prev().prev();
var taskNumber = parseInt($(this).text().replace('Search ',''));
$task.addClass("task-" + taskNumber);
var textRepText = $task.text();
var pageCheck = 1;
var pageText = $(this).parent().parent().prev().text();
if (pageText.indexOf("View Image.") > -1) {
pageCheck = 0;
}
//console.log(pageText);
var prefixKeyword = 'Keyword:';
var prefixSite = 'URL:';
var keywords = $.trim(textRepText.replace(prefixKeyword,'').replace(prefixSite,''));
var keywordsEncoded = encodeURIComponent(keywords).replace(/%0A/g, '');
//console.log(keywords);
sleep(500); //added in rate limiting because issues. Should be virtually un-noticeable.
window.open("https://www.google.co.uk/search?tbm=isch&q=site:{0}&magicword={1}&task={2}&isPage={3}".format(keywordsEncoded, "oogieboogie", taskNumber, pageCheck));
//console.log("https://www.google.com/search?tbm=isch&q=site:{0}&magicword={1}&task={2}".format(keywordsEncoded, "oogieboogie", taskNumber));
}));
});
console.log(numTasks+" tasks");
window.addEventListener("message", function(e) {
if (e.data.magicword === "oogieboogie") {
console.log("Message Received");
console.log(e.data);
$("textarea#Url-{0}".format(e.data.task)).val(e.data.url);
} else{
console.log("MSG "+e.data);
}
}, false);
} else if (window.opener != null && window.location.href.indexOf("oogieboogie") > -1) {
window.opener.postMessage("Child Frame Loaded", "*");
$('#rg_s div.rg_di a').each(function() {
var taskNumber = parseUri(location.href).queryKey.task;
var tHref = $(this).attr('href');
var dHref = decodeURIComponent(tHref);
// *** GET IMAGE DIRECT URL ***
var refRegex = new RegExp("[\\?&]imgurl=([^&#]*)");
// *** GET PAGE URL IF TASK CALLS FOR IT ***
if (parseUri(location.href).queryKey.isPage == 1) {
refRegex = new RegExp("[\\?&]imgrefurl=([^&#]*)");
}
var pageUrl = refRegex.exec(dHref)[1];
$(this).click(function() {
window.opener.postMessage({magicword: "oogieboogie", task: taskNumber, url: pageUrl}, "*");
//console.log({magicword: "oogieboogie", task: taskNumber, url: pageUrl});
//sleep(100);
window.close();
});
});
}