By marrr
—
Last update
Oct 2, 2009
—
Installed
379 times.
// ==UserScript==
// @name OnlineTVRecorder Banner Helper
// @namespace http://userscripts.org/users/42191
// @description Automatically clicks banners on the OnlineTVRecorder BuyClicks Page for GWPs.
// @include http://www.onlinetvrecorder.com/buyclicks/weasel.php*
// @include http://www.onlinetvrecorder.com/buyclicks/bcbf.php*
// @version 01.09.2009
// ==/UserScript==
var overrideURL = "http://localhost/";
var mainFrameName = "mainFrame";
var xpBannerLinks = "//div[@id='content']/table[1]/tbody/tr[@onmouseout='hideAllDetails();']/td[1]/div[1]/@onclick";
var xpNoMoreBanners = "//div[@id='warning' and contains(text(),' 0 Banner')]";
var xpMainFrame = "//frame[@id='" + mainFrameName + "']";
var reWeasel = /weasel\.php/;
var reBCBF = /bcbf\.php/;
var currentBannerNumber = 0;
var bannerLinks;
function grep(xpath)
{
return document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
}
function runScriptInPageContext(code)
{
var script = document.createElement("script");
script.type = "application/javascript";
script.innerHTML = "(" + code + ")();";
document.body.appendChild(script);
}
function isNoMoreBanners()
{
var div = grep(xpNoMoreBanners);
return div.snapshotLength > 0;
}
function openNextBanner()
{
if(currentBannerNumber >= bannerLinks.snapshotLength) return;
if(isNoMoreBanners()) return;
var nextBannerLink = bannerLinks.snapshotItem(currentBannerNumber).value;
currentBannerNumber++;
GM_log("opening banner " + nextBannerLink);
runScriptInPageContext(nextBannerLink);
}
function redirectMainFrame()
{
// set it, not matter what. FF doesn't comprehend otherwise.
var frame = grep(xpMainFrame).snapshotItem(0);
frame.wrappedJSObject.src = overrideURL;
}
function installOpenBannerInterval()
{
// open the next banner after some time
window.wrappedJSObject.setInterval(openNextBanner, 3000 + Math.random() * 5000);
}
if(location.href.match(reWeasel)) {
// grep the banners
bannerLinks = grep(xpBannerLinks);
installOpenBannerInterval();
}
if(location.href.match(reBCBF)) {
// close the window on leaving the page
window.addEventListener("unload", function(event) { window.close(); }, false);
// override top layers page request (hacky, but who cares)
window.wrappedJSObject.setInterval(redirectMainFrame, 1000);
}