Sellout.Woot Links
By clownse
—
Last update Jun 20, 2008
—
Installed
160 times.
// Sellout.Woot Links
// version v0.2
// 2008-06-20
// Copyright (c) 2008 Erich Oelschlegel
// Released under the GPL license
// http://www.gnu.org/copyleft/gpl.html
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.
//
// To install, you need Greasemonkey: http://www.greasespot.net/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/GreaseMonkey/Manage User Scripts,
// select "Sellout.Woot Links", and click Uninstall.
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name Sellout.Woot Links
// @namespace http://erichjames.com/source/gm/
// @description puts a link to sellout.woot.com on *.woot pages
// @include http://*.woot.com/*
// @exclude http://sellout.woot.com/*
// ==/UserScript==
/* BEGIN LICENSE BLOCK
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You can download a copy of the GNU General Public License at
http://www.gnu.org/licenses/gpl-3.0.txt or get a free printed
copy by writing to:
Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
END LICENSE BLOCK */
// CHANGELOG
// v0.2: fixed themage issues for shirt.woot and wine.woot (20 Jun 2008)
// v0.1a: initial release (18 Jun 2008)
// FUTURE PLANS
// - rewrite extractWootLink() and getTitle() into one function so as to
// limit regular expression matching.
// - consolidate functions into a common library for use with my other
// sellout.woot script (http://userscripts.org/scripts/show/13074)
// javascript lacks everything php has in the date/time methods department which
// is why this function is here. basically this gets the current date of the
// woot.com servers (which are located in central time, GMT-600)
function getTheDate() {
var d=new Date();
var month=new Array(12);
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var nd = new Date(utc + (3600000*-5));
month[0]="JAN";
month[1]="FEB";
month[2]="MAR";
month[3]="APR";
month[4]="MAY";
month[5]="JUN";
month[6]="JUL";
month[7]="AUG";
month[8]="SEP";
month[9]="OCT";
month[10]="NOV";
month[11]="DEC";
return month[nd.getMonth()] + " " + nd.getDate();
}
// scans shopping.yahoo.com for the sellout.woot.com link
function extractWootLink(content) {
var match = content.match(/sellout.woot.com\/Default.aspx%3FWootSaleId=([0-9]+)%26ts=([0-9]+)%26sig=([0-9a-f]{16})/);
return "http://sellout.woot.com/Default.aspx?WootSaleId=" + match[1] + "&ts=" + match[2] + "&sig=" + match[3];
}
// scans shopping.yahoo.com for sellout.woot product title
function getTitle(content) {
var match = content.match(/sellout.woot.com\/Default.aspx%3FWootSaleId=([0-9]+)%26ts=([0-9]+)%26sig=([0-9a-f]{16})\" rel=\"nofollow\" >(.+?)<\/a><\/h2>/);
return match[4];
}
function insertSellout() {
GM_xmlhttpRequest({
method: 'GET',
url: 'http://shopping.yahoo.com/',
onload: function(details) {
var allDivs,
selloutHere,
site = window.location.host,
imgdata,
searchtxt;
// determine which site we're on, so we can display the correct theme
// image and insertion location
if(site == "www.woot.com") {
imgdata = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAXCAMAAACGaYKdAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABgUExURa+uqWxradDQz////ufn552cmImIhbe1tqSjnpSTj6qppY2LkXZ1d5KQl5qYnn18eaKgp4OAhdnY27u6vsnIyLOzr769ubCute3t7cLBw4+OieLi4t7d3qCfnK6sr/Dw8HGaadUAAAQfSURBVHja7JjpcqM6EIVbC5ssFgkBYtX7v+WcBpL74869SdWkyq4pd2yjjQZ9Od0SkHjbt43uo31//vfzAcva9m1fmgUxAiqXv+1LY17UtvmyVD9pdVKpKpLqfs6lZ5dPtWUBLgKrqsp+0hqlovBK1fnveksvw7evZ7wv2GNSKonsqVaBFrmlyva9/EHrlPJiBazlP3u/e71CqUKUZaX4pPKJtjMtR/mC/7b5STuU0qeylt/1AlYvvntBwKqtMdCqmsRunmjlDmlRDmGZeJokGWOShkaubQWhpKnQkijEgri6xriOhraNazrwLxnTr5s3VM7rtoWSpltZbWWon+VcMKLDYGR/mH4DyhBxnum9B9nJd2QOPZvDFDIUp7/Be69x2hzhyscTlhPXxZ7zAa2sOmGVqIdEROs6gsdKIyrDpsFHpkBzGscEYISS5KaZtrPOsGAGKoqxbTAzmVRsDMNCmysP5BqOoB1yihkVPPWzRYmMShxa1s5UkVShunrSQd12jQl7ugeXQC9yeqb9C9bMeGiIgWEBnaQhSWhIau3pboEFTZsHRNJnlTjsrLBg1Ygac8d3Fphny4JIXivF0tAtw5LWc68QFRmJjgo9WwtuBRPy+NkqtKd5Ap9HDZ8HBpcSS0b1QrAioGxnu5dzPKGsFLYhjoCkB24Y0siHMRVbCCh/KAvT7HgNVFuPKW7HHYZOcnoWoleeYVnTM6cZEIRwJREaUzuxcozy50loR5JKauXtsld7Cy/YC+bQXwctvpSyPmD5S1lyZRxefnZ8who2pDc93MriUFLHwbAkrEPMBVaW4+CxD6x/sWP9mAB4TLBur/NQ5KyktqQcoLHeHmDGK0BbNavqLLzYBUObWVh6LWWFKwz1HYZajinibyB/wbrjjsMwcIK7lUWG5WHOJAxtuBMWawLT7nYyUAoEox1BVJMDscMNuGJhak5IzczpiSVV5AfzxKYq1WZAyVnNaypUbdyTo5C+TPCDZDisohvWPwleMtR456yBZ215meumWfXdnbMEZKJWzRpjdn3pGRYUmMrUN1rp5uAdQXsGILtIa2JurFFO7VEwWW9Ud0QlyxdTFoNIzGPEIW3DwPsFFtKHskAyJQA9lYUNxqWswAIphL2WM2lPWIwv76/VrLccXgxDP1zGmTw5TnEi59irNWA2prrWQI0H++ksIXFV2QUN4ltt+Tqw/sD2Xs4P4TLnjqmx1tb2tnJ3k5S9sy3iqGn4RQcy0MPVXGomIbKal0VUHdzkTQjwIxbaRd11GILNgjsHO9MIsf8VsCjDE3kOHyU/mi+G9sdjP/Doib1cxW83chYFSrl77DysFTY3hhlQji8t7XkD2fnOiB0ZTn6i4tbKMuBMvFTOegkz5vNOXuWWXhfWC9sb1hvWG9ZrwPolwAAZRIjja5TYNwAAAABJRU5ErkJggg==";
searchtxt = "//div[@class='onShirt']";
}
else if(site == "shirt.woot.com") {
imgdata = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAXCAMAAACGaYKdAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABgUExURV5qccjO04KRm5Gjrf39/amxunOAiObo6oiZonyKkmd0e7vDyZypsvP09JOZo7S5wYyeqG97g5yjrI+hq9bb3uHj5urt7/b294yUnoWVnlhiaPDw8fn5+oeXoZ6fq5iep+Ju7wkAAATPSURBVHja7JcNc6QoEIbDl8rSChFUPFH//7+8t3GS7NbuXc3eTlWmrtKVKNM0jDzzdoMvf33Z3fbC/192h1VYuH97uL02r7Dm9aFT2ofO97v2wqj4MR5tlryR2fjjn/p/b7Z6HZa+zc1n2esr42JU9tGWt6LJFO3sL+c+yeT75yIacVud1mV4/KPea00DWt/ASj7Y1mHTy4nViV/O3QldxrvnolImaWWYtNbn45/1XmNaLygFcu3+3EIItxvuY9HLAFjOSri68GPo2Gp92P02jC9Xs/v+dpupi77oya6dwqB+4Pk+w/YVtF5fXvFb1Qf7I1PkaRyDMobIKEWLLgdgebtGOAypEJUaYwhEavSb1sZ4VYeZekWbHCGoBkf2GRo9miS0nkZHBGXN1v75o/4361bZNC8Q1h7maiKKeo2GPyWKaLWRJheja02sRmmeW8chPkbl5+pUymy6LEa5rSxlSSMV3SMNi7HRJPhmQWNqZxNUmls/I6F06Slw/BSV6BcflChJ+WleltZRJNMuRevNUarBixg5q5GN8VMshB3SYlhdUMrNSqmUjDIpKYMPlCZSSswORIzBrRq1CbGTAKyWbqNUVVJ/5IyMSc0BRuOi5wGS8OzS+NMJqy6UR4AyCY7kjNwV9oAyBEK+7lCO8/oWrMzCONFrTI/0E27sDAqd3dXnWAzdB6zIy/a8/kitM5VBEopml1QU0yRug0Tiq5nxyydI7w2W4Z0KeyDjOZA2Q9FbRhk3JyjiEAGRZUjkkOeMVoP18zbZqRFARcDoNlPZAHZx2WLckbjeNXLSIqPXobDuphSJIU8Aq2rkIqGEuGCBk0s0m6iqyKqlS2HMkwDzDRaX7GUca8KUUloAWyx0YtAwvP1P0BMYrCN4nhnqyTZ3SN8TVImVdogyIpg4eNFpQ1Fv5OCLGGrps10cW9fI8DTKchVWTB+wUK6EeKf4AWtyfkZKujdY6gSECemkDc7tw2BRjKEsfTAsuY/IpUNwc+z1QriUgROKiIBiKwl601Mm3iRXZi42KDMrw8pikTEkOqXd43Moq+V/FhAK+gVrErXQzwRY8ac05LSdxRssOpFaR8tpmAfjMq8dUjqhksU5AUScnmmo2yRyUXuTQCrRwfXLXml8chp61P9iwZB/CiSyRF1rR+cIPUOIT6OsHwo8555wLDSo611ZKPCoVK24Qtx8g+WFB5UGaMq8bYtnWFLgFP9W4IuzGUsXopTl3B0q97Kc6OuRaUu2OJch1XhLqMHeyroJ6pIsI4T4HB/dfFe33qeoWbz54ejAyqlHB1WV5qbvlKVuR4cLlropi1wpfYsT45H6pU+HtKBnybksMw5VqEsoXN04ba07ToQNrt0SWSqLRzlD3+kmvNBg1g0lj4Nzdm3fT6NtVnzl1nop5yKkDOEZYP1L3D2TDZLfn7qB3woaXis+sW8Ng7XsRCvm25tiF+GsUfDv+eZAXYpZ8jzvwdwd1FnHcxz7nxvWfXOteItDkoQsbW3suIR9D5eLD76KWyverPhc2SEcx2K57vxOE1XYV9ZM7DJPwA8UulynZOfODXzF+hw16wGzXb85zrrXij6WFcIQrm/4qDjXuV/9nFV4qjdffO+9guOnoXo0rP+5fcH6gvUF60lg/S3AAOLi2bi6Iu1SAAAAAElFTkSuQmCC";
searchtxt = "//div[@class='onWoot']";
}
else if(site == "wine.woot.com") {
imgdata = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAAXCAMAAACGaYKdAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABgUExURfz8/I6GdJ2VgXlzZbeumNbSyrGur6aeirSrlevp5YF7a6+mkMrEtW5oXcG6qqyjjuPh3WRfWfb19bu0pF5aUqaiorComO/u7NzZ1Lq4uMXDwrauoN3c3fDw8JuYmIuHi8WuXUwAAAR/SURBVHja7JiLjqQ4DEVNHpAEAiRAIFDA///lXFPVI+30StvqntGy2r4lQuGYR07ZTiiSX5D/05L3EslvfRyW+9aHRYX7wuedplyKM5dT8ZuEm4gY7fmlp/xtH7qeSXxuE+80UxQTUZbi71Rt6RAfVkrMXGQicvLTz/g7NxKV+LSqX3XsFB1Gl8P7PkhTPIrqgyoj9Q436QHr9OIOouoL6n5VihQlw/Lv+yCLYbvug2qJFmaOk6J01R1E9RdkapPaKZlktmFKpUkMy61Ek69hHQbuSjW+10bheEfP0cBiUjNcJ6NHNQkGNQyGO4wZpqndkjGa6HG2Q43ImkNR30FkWI1m4UG1bq9Wa8XPrQfTNNzPjVFa8x5G014GY0qMP07dilpFUae3yDpcGh47KrNWm7ZzWZtl7vOMhKIYq6SaOfaVWmPcOrXSUrX9DOd1AzMb4TSvaqHLu+nAfh0rcweRYjW6j4tWDS06LqqJeulnmBe7qDa2hjelWuq13ZWi2ajGXucBzn6coSTS/kTYVJFmj5CYuHBdWqqecy8BVObxP/LhK7UBg0toS6Es5eniAijdFi+eqG0oWbSv2RUll6yk7iB67a/RU6vUENvre6+VigPYaKsQINDVoiFsL1g8aOklp5c8OG0wQL9yZDFFx8jO5YJl4RjgJ8cga7XBJwuc3ctEcwac7JC+8XhwvRtdTytDyuPo2cs7cztYDUeTWvRFAk3T48Ao2z/J0PA0U/viicji6nskeoWDRYjEkLkyYRuxjHtQ+bhggdN5IlikSzxw9FvGSOcKO+iOwclIy059CIUo4yrBs/QChc2Wo7ghLPtXWP2smVPLAffmyrCU7l+w1IH0enAWlXiRc5yK9ooswDgkyn6k6Qq0jSu/4IomrvMMrDM9LCdmwPmnTBt2605WVmaztEqgLHEJ3INj8Xawhit25uYioRdFWi9x+OmzN4xy4cN9ecFSWIbSZBmWlMcKWA/PeYco2dtVY9kVwE07FDdyTHaaHmlr9DbBoBlTdB4ecWjz/pxJ+wxkdHikoS3WVTW57NT9YCm9AxTSD7x0HHT/ZPbmg7rfaPAkDrYnrKxRb/YgOQUx+ZVItD7w0vMq8OARsTxFucqaqYj1StcTfdyg2h2RyuDS+poNylHq5ySog2S+c8zgTxOWFHeC1S5PZFYPqrXW9q3SHEkDqLxFUdvbpX0e6std6Rj3/hyLY9njvpyjLPURylxK1/GiguZp9Gbqd5uP8xxFle28nOGIcQqiP0Jh1keQRnXTjLCCs0xHtjtf0ldmWmZbBmmj9g5LsRvB+pRMKnwIY2HMGXxAjU4CU1ldeC9Uxf9phFF2KhUBsxomzU5VfoRX58LoazFijoOBi1iHXjmysxF8RVwEV4fbKOvTj0GYZP7rsJSq8WbZYRymO93JpSVVWKt3HAZJYDYUvEAyeFOon4NNlai4q0iwslfXXR11d+CV5nKu+aXz+VvAGT5VUd+sZn1d7376bdveSo35J1+2/DTeo0D9UVj/A33D+ob1Detf1w8BBgBuMa5/Z9c4UQAAAABJRU5ErkJggg==";
searchtxt = "//div[@class='onShirt']";
}
// locate where in the page we will insert the new link
allDivs = document.evaluate(searchtxt, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
selloutHere = allDivs.snapshotItem(0);
// start rewriting the HTML
selloutHere.innerHTML += "</div><div class=\"onShirt\" style=\"border-top:3px solid #F29F01; border-bottom:none;\"><h4 style=\"background:url('" + imgdata + "') no-repeat;\"><a href=\"http://sellout.woot.com\">Today on Sellout.Woot:</a></h4><dl class=\"item\"><dt>" + getTheDate() + "</dt><dd><a style=\"display:block;height:100%;width:100%;\" href=\"" + extractWootLink(details.responseText) + "\">" + getTitle(details.responseText) + "</a></dd></dl>";
} // end function(details)
}); // end GM_xmlhttprequest()
} // end insertSellout()
// now, actually call our function to execute
insertSellout();