Google Image Relinker
This is a Greasemonkey Extension which improves google's image search results :
- Removes the annoying frameset when you click the image thumbnail
- Adds a link directly to the image
Code
// ==UserScript==
// @name Google Image Relinker
// @namespace nickthecoder
// @description Rewrites Google Image Search links to point straight to the pictures
// @include http://images.google.*/*
// ==/UserScript==
// Please change the version before every modification
var version = 2.02;
// Add stubs for logging if firebug isn't enabled on this browser
if ( ! console ) {
console = new Object();
var doNothing = function() {};
console.debug = console.info = console.log = doNothing;
}
console.debug( "begin greasemonkey script google_image_relinker" );
(function()
{
function selectNodes(doc, context, xpath)
{
var nodes = doc.evaluate(xpath, context, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
var result = new Array( nodes.snapshotLength );
for (var x=0; x<result.length; x++)
{
result[x] = nodes.snapshotItem(x);
}
return result;
}
doc = window.document;
// Get a list of all A tags that have an href attribute containing the start and stop key strings.
var googLinks = selectNodes(doc, doc.body, "//A[contains(@href,'/imgres?imgurl=')][contains(@href,'&imgrefurl=')]");
for (var x=0; x<googLinks.length; x++)
{
// Capture the stuff between the start and stop key strings.
var gmatch = googLinks[x].href.match( /\/imgres\?imgurl\=(.*?)\&imgrefurl\=(.*?)&/ );
// If it matched successfully...
if (gmatch)
{
// Replace the link's href with the contents of the text captured in the regular expression's parenthesis.
//console.debug( "Plain", gmatch[1], gmatch[2] );
//console.debug( "Unencoded", decodeURI( gmatch[1] ), decodeURI( gmatch[2] ) );
//console.debug( "Unescaped", unescape( gmatch[1] ), unescape( gmatch[2] ) );
googLinks[x].href = unescape(gmatch[2]);
var imageURL = unescape(gmatch[ 1 ]);
var newBit = document.createElement("div");
var html = '<span style="position: relative; top: -3px; font-size: 10px; line-height: 1em; padding: 1px; background: #ccc; border: 1px solid #333;">';
html += '<a title="direct link to image" href="' + imageURL + '" style="text-decoration: none; color: #333; ">IMG</a>';
html += ' <a title="about this greasemonkey addition (version ' + version + ' )" style="color: #666;" href="http://nickthecoder.co.uk/pinkwino/view/Google+Image+Relinker">(ntc)</a>';
html += '</span>';
newBit.innerHTML = html;
googLinks[x].parentNode.insertBefore( newBit, googLinks[x] );
}
}
})();
console.debug( "end greasemonkey script google_image_relinker" );
Version History
2.01
I started on verion 2.01, because this is a fork of the original Google Image Relinker written by Patrick Cavit, (http://patcavit.com) and Eric Hamiter( http://roachfiend.com/)
2.02
- Added logging to Firebug.
- Change from decodeURI to unescape. There are two ways that google could have encoded the urls, and I believe they use the "escape" way, not the "encodeURI" way.