Intercepter 1.2

By Bam Bam Last update May 14, 2008 — Installed 2,088 times. Daily Installs: 3, 2, 4, 6, 2, 4, 0, 5, 2, 1, 5, 9, 14, 3, 5, 1, 6, 1, 8, 4, 2, 6, 3, 4, 3, 3, 6, 8, 4, 5, 11, 4
// ==UserScript==
// @name           Intercepter 1.2
// @namespace      http://hacks.wuonm.com & http://www.seowned.com
// @description    Replace short and meaningless tinyurls with the domain of the actual web site using the preview feature, now works on all websites.
// @include        *
// ==/UserScript==

 const __re_redirecturl=/(.*<a id="redirecturl" href=")([^"]+)(">.*)/
 const __chrome_data = 'data:image/gif,GIF89a%0D%00%07%00%C2%04%00%98%A8%94%A2%A6%92%B9%BC%AD%D2%D7%BF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF!%F9%04%01%00%00%04%00%2C%00%00%00%00%0D%00%07%00%00%03%1F8%12%2CC%04%40%22%26%0C%10H%82%AD%D5%1C4hd%D9y%99TY%1DH(L%E0dS%02%00%3B';

 function getAnchorId(urlPrefix, n){return urlPrefix + "-" + n}

 var urlPrefix = "tinyurl.com";
 var xpath = "//a[contains(@href, 'http://" + urlPrefix + "')]";
 var anchorList = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
 for (var jdx=0; jdx<anchorList.snapshotLength; jdx++){
     var anchor = anchorList.snapshotItem(jdx);
     if (anchor) {
         anchor.setAttribute("title", "Loading...");
         anchor.setAttribute("id", getAnchorId(urlPrefix, jdx));
         var uriParts = anchor.href.split("/")
         GM_xmlhttpRequest({
                  method: 'GET'
                 ,url: "http://preview.tinyurl.com/" + uriParts[uriParts.length-1]
                 ,onload: function(resp) {
                     anchor = document.getElementById(this.anchorId);
                     if (resp.status == 200) {
                         try {
                             var actualUrl = __re_redirecturl.exec(resp.responseText)[2];
                             anchor.setAttribute("href", actualUrl);
                             anchor.setAttribute("title", actualUrl);
                             /* FIXME use css + data: */
                             var chromeImg = document.createElement("IMG");
                             chromeImg.setAttribute("src", __chrome_data);
                             anchor.innerHTML = '&nbsp;' + actualUrl.split("/")[2];
                             anchor.parentNode.insertBefore(chromeImg, anchor);
                         }
                         catch(exc){
                             /* ignore errors */
                         }
                     }
                 }
                 ,anchorId: getAnchorId(urlPrefix, jdx)
             }
         );
    }
 }