// ==UserScript==
// @name TinyURL restorer
// @namespace http://jmblog.jp
// @description restore the TinyURL and show the original URL in tooltip.
// @include *
// ==/UserScript==
// This script uses Remy Sharp's TinyURL Callback API http://remysharp.com/tinyurlapi
var snapTinyURLs = document.evaluate("//a[contains(@href,'http://tinyurl.com/')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < snapTinyURLs.snapshotLength; i++){
var tiny_url = snapTinyURLs.snapshotItem(i);
setTitle(tiny_url, tiny_url.textContent);
}
function setTitle(elem, url) {
elem.setAttribute('title', 'Please wait ...');
GM_xmlhttpRequest({
method:'GET',
url: 'http://remysharp.com/tinyurlapi?callback=cb&url=' + url,
headers: {
'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
'Accept': 'application/atom+xml,application/xml,text/xml',
},
onload:function(results) {
var restored_url = results.responseText.match(/cb\(\"(http.+)"\)/)[1];
elem.setAttribute('title', restored_url);
//GM_log('set title : ' + url + ' -> ' + restored_url);
}
});
}