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.