By Lior Zur
Has 24 other scripts.
// ==UserScript==
// @name Gamespot screenshot view-as-image
// @namespace http://www.gamepsot.com/fix
// @description Lets you see Gamespot's screenshots as plain images.
// @include http://www.gamespot.com/*
// @include http://uk.gamespot.com/*
// @include http://www.uk.gamespot.com/*
//
// Released under the GPL license.
// Copyright: Lior Zur, 2007.
//
// (This was a hell to write.)
// ==/UserScript==
// Functions:
function $(id) {
return document.getElementById(id);
}
function $x(p, context) {
if (!context) context = document;
var i, arr = [], xpr = document.evaluate(p, context, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (i = 0; item = xpr.snapshotItem(i); i++) arr.push(item);
return arr;
}
//End functions
reIsScreenshot = /^http:\/\/www\.gamespot\.com\/pages\/image_viewer/;
var allElements, thisElement;
if (!reIsScreenshot.test(location.href)) {
allElements = $x("//a[contains(@href,'open_image_viewer')]");
if (allElements.length > 0){
//Construct screenshot viewer page query:
var sampleImageURL = allElements[0].href;
var reMatches = /open_image_viewer\(\'(\d{4,})\'\,(\d{1,})/.exec(sampleImageURL); //THIS WORKS.
if (!reMatches) return false;
var pid=reMatches[1];
var img=reMatches[2];
var sid="undefined";
var rgroup = '';
var pageRequest = 'http://www.gamespot.com/pages/image_viewer/frame_lead.php?pid=' + pid + '&img=' + img + '&sid=' + sid + rgroup;
//Insert "please wait"
var newElement = document.createElement('div');
newElement.innerHTML = "<div id = 'gmpleasewait' style='vertical-align: middle; font-size: 12px; display: block; position: absolute; right: 0; top: 0; color = white; text-align: center; background: green; border: white 1px solid; width: 200px; height: 20px;'>Parsing screenshot links...</div>";
thisElement = $("gnenav");
if (thisElement){
thisElement.parentNode.insertBefore(newElement, thisElement);
}
//Request screenshot viewer page:
GM_xmlhttpRequest({
method: 'GET',
url: pageRequest,
headers: {'User-agent': 'Mozilla/4.0 (compatible)',
'Accept': 'application/atom+xml,application/xml,text/xml',},
onload: function(responseDetails) {
///////////////////////////////////////////
var response = responseDetails.responseText;
var screenPath = new Array ();
// Look through the response for the screen paths' array.
// Put it into our own array, screenPath.
//screens[18]['screen_path'] = gs_img_url + '2006/270/935084_20060928_screen008.jpg';
var reScreenshotLink = /\[(\d{1,3})\]\[[\"\']screen_path[\"\'][^\"\']*[\"\']([^\"\']+)[\"\']/gi; //The loop depends on the RegEx being a variable! ALSO on set to __/gi__ (exec stores in this variable "LastIndex". see http://www.webreference.com/js/column5/methods.html)
for (var i = 1; i < 1000; i++){
var reMatches = reScreenshotLink.exec(response);
if (reMatches){
screenPath[parseInt(reMatches[1],10)] = reMatches[2];
}
else break;
}
// Run the loop on all appropriate links.
// For each link, get its image number, and assign the corresponding URL from the array.
allElements = $x("//a[contains(@href,'open_image_viewer')]");
for (f = 0; f < allElements.length; f++) {
thisElement = allElements[f];
reMatches = /open_image_viewer\(\'(\d{4,})\'\,(\d{1,})/.exec(thisElement.href); //THIS WORKS.
thisElement.href = "http://img.gamespot.com/gamespot/images/" + screenPath[parseInt(reMatches[2],10)];
thisElement.style.border = "#87B52A 1px solid";
thisElement.style.background = "#87B52A";
}
//Remove "please wait"
thisElement = $('gmpleasewait');
if (thisElement){
thisElement.parentNode.removeChild(thisElement);
}
///////////////////////////////////////////
} // End function.
}); //End xmlHttpRequest
} //End if -- A screenshot link exists.
}//end global if