By engtech
Has 38 other scripts.
/*
--------------------------------------------------------------------
How to Install a Greasemonkey Script
--------------------------------------------------------------------
- You need the Firefox web browser - Download and install
http://www.mozilla.com/en-US/firefox/
- You need to install Greasemonkey - How-To
http://internetducttape.com/2007/08/23/howto-install-firefox-extensions-screenshots/
- Install this script - How-To
http://internetducttape.com/2007/08/24/howto-use-firefox-greasemonkey-userscripts-screenshots/
*/
// --------------------------------------------------------------------
// ==UserScript==
// @name Delicious Stumbles
// @namespace http://internetducttape.com
// @description Adds a link to del.icio.us that submits all links on the page to StumbleUpon
// @include http://del.icio.us/*
// @include http://*stumbleupon.com/submit?*
// @version 2.01
// ==/UserScript==
(function () {
var su_logo = 'data:image/gif;base64,'+
'R0lGODlhEAAQAPcAAAAAAP///wBJkgBKkgpMjQpIhxZJfmWBnVhwiFhtggBSmwdOkCFUgQBZpQBZ'+
'ogBWngBTnABUmwBUmABSlgBSlQFZpBZThwBiqgBepQBbowBcowBaogBcoAVdnwhZlmKFnwBuuABu'+
'twBorQBlqgNssgVlqQZmqgpuswBvuAButgFzu2ybuaLN5yB7raLO6KLN5gFuqAh3sg2HxBB2qBeD'+
'uRV4rR+AtE6bwqHS7J25yBF/tBeLwy+VxFOs11mx2W+32oOzyX/Q7a/j9pja7uP3/b/p8/j9/uz7'+
'/fb9/vX9/u38/fj+/vr+/vv+/vr9/fz+/urs7P3+/vn++9/x5fX++Or98M/73Ov98Or977/0yur9'+
'7sT4zGbcc3bhhILdjBPBIxS1Ihe7Jxq+KR/GLiLMMiHJMCHJMTzKShq6JyXGMSjANSzENg+2GCzF'+
'NQPJCCDaJDTyOTjfPdD20c/10ADSAADRAADQAADPAADBAAC8AAC7AQC0AQCzAACsAAHQAQHFAgGs'+
'AQLUAgK3AwO9BQXUBQnZCQvfDAvaCwrKDArCCwzFDA7fDhPoExnrGSjsKEfeR0PJQ3rbeoTrhHzO'+
'fHXCdf7+/v39/fz8/Pv7+/r6+vn5+fj4+Pf39/b29vLy8vHx8erq6unp6ejo6OXl5ePj4+Dg4N/f'+
'39bW1szMzMbGxsXFxcPDw8LCwq+vr66urqysrKmpqaioqJSUlJKSkpCQkIqKioiIiIeHh4aGhn5+'+
'fnFxcXBwcP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAALwALAAAAAAQABAA'+
'AAj/AAMIDFDpkiZOnTptwlRpYABMBOVIisPI0KNIpD4xHFhpDpxGiwoFqkMHEapQmhp2dHSIkB87'+
'de7c0TOFlahMleS8+fNljJkyZNzgyXMlxypQliYNyrLkyBElT6wI2oPlxQFUmSC1qdTjRAkTNyqh'+
'6VOFBYNXmxKxoUJEiI8JLSqp6aPFBQVZnBQBStNlC5MaNiqt4YMFhwRbnCiJCQOGS5QZMZJ4OSPl'+
'h4VbmqA0efLEyJAKDYIgcVKEBIJZmEbxoKEDRoQRGETI2MGhwC5YlT4BUREiBQgUIVBcULAAQa1U'+
'ATSVWtHhwQYNGRxAIIAglytTBD2dcvXBg4ABBhLoF6rV6pQngZc8mVIVixYuXLNgpTLl6VJAADs=';
function deliciousSubmitOneSUFromExtension () {
// CODE FOR del.icio.us extension or direct url submit
var su = document.createElement('a');
su.id = "su";
su.className = "su_submit";
su.href = "javascript:;";
su.target = '_blank';
su.addEventListener("click", function(ev) {
su.href = getStumbleSubmit();
}, false);
var img = document.createElement('img');
img.src = su_logo;
su.appendChild(img);
var text = document.createTextNode(' Submit to StumbleUpon');
su.appendChild(text);
GM_addStyle(".su_submit { border: 1px solid #fc0; border-left: 0; border-right:0; background-color: #ffc; margin-top: 10px; padding: 3px 10px;} .su_submit a { font-weight: bolder;}");
var save = $x("//*[@id='suggestions']");
if (save.length > 0) {
var tr = document.createElement('tr');
var td = document.createElement('td');
td.colSpan = 2;
tr.appendChild(td);
td.appendChild(su);
insertAfter(tr, save[0]);
}
else {
var body = document.getElementsByTagName('body')[0];
insertAfter(su, body);
}
}
function getStumbleSubmit () {
var inputs = document.getElementsByTagName('input');
var href = "";
var title = "";
var notes = "";
var tags = "";
for (var i=0; i<inputs.length; i++) {
var input = inputs[i];
if (input.id == "url") {
href = input.value;
}
if (input.id == "description") {
title = input.value;
}
if (input.id == "tags") {
tags = input.value;
tags = tags.replace(/\s/g, ",");
tags = tags.replace(/,$/g, "");
}
}
inputs = document.getElementsByTagName('textarea');
for (var i=0; i<inputs.length; i++) {
var input = inputs[i];
if (input.id == "notes") {
notes = input.value;
}
}
var submit = "url="+escape(href)+"&title="+escape(title);
var extra = "¬es="+escape(notes)+"&tags="+escape(tags);
var stumble = "http://www.stumbleupon.com/submit?"+submit+extra;
return(stumble);
}
function deliciousAddLinksSU () {
// CODE FOR del.icio.us
GM_addStyle("a.su_submit:link { color: #9999FF !important;}");
var lis = document.getElementsByTagName('li');
for (var i=0; i<lis.length; i++) {
var li = lis[i];
if (li.className == "post") {
var href = "";
var title = "";
var notes = "";
var tags = "";
var insert;
for (var j=0; j<li.childNodes.length; j++) {
var child = li.childNodes[j];
if (child.className == "notes") {
notes = child.innerHTML;
}
else if (child.className == "desc") {
href = child.firstChild.href;
title = child.firstChild.text;
}
else if (child.className == "meta") {
for (var k=0; k<child.childNodes.length; k++) {
if (child.childNodes[k].className == "tag") {
if (tags != "") {
tags += ",";
}
tags += child.childNodes[k].text;
}
}
}
else if (child.className == "commands") {
insert = child;
}
}
var submit = "url="+escape(href)+"&title="+escape(title);
var extra = "¬es="+escape(notes)+"&tags="+escape(tags);
var stumble = "http://www.stumbleupon.com/submit?"+submit+extra;
if (insert) {
var su = document.createElement('a');
su.id = "su";
su.className = "su_submit";
su.href = stumble;
su.target = "_blank";
var img = document.createElement('img');
img.src = su_logo;
su.appendChild(img);
var text = document.createTextNode(' stumble /');
su.appendChild(text);
insert.parentNode.insertBefore(su, insert);
}
}
}
}
function deliciousSubmitAllSU () {
// CODE FOR del.icio.us
var lis = document.getElementsByTagName('li');
for (var i=0; i<lis.length; i++) {
var li = lis[i];
if (li.className == "post") {
var href = "";
var title = "";
var notes = "";
var tags = "";
for (var j=0; j<li.childNodes.length; j++) {
var child = li.childNodes[j];
if (child.className == "notes") {
notes = child.innerHTML;
}
else if (child.className == "desc") {
href = child.firstChild.href;
title = child.firstChild.text;
}
else if (child.className == "meta") {
for (var k=0; k<child.childNodes.length; k++) {
if (child.childNodes[k].className == "tag") {
if (tags != "") {
tags += ",";
}
tags += child.childNodes[k].text;
}
}
}
}
var submit = "url="+escape(href)+"&title="+escape(title);
var extra = "¬es="+escape(notes)+"&tags="+escape(tags);
var stumble = "http://www.stumbleupon.com/submit?"+submit+extra;
GM_openInTab( stumble );
}
}
}
function handleStumbleUpon () {
// CODE FOR StumbleUpon
var notes = "";
var tags = "";
// Decode notes and tags passed by URL
var search = document.location.search;
var pairs = search.split("&");
for(var i=0; i<pairs.length; i++) {
var fields = pairs[i].split("=");
if (fields[0] == "notes") {
notes = unescape(fields[1]);
}
if (fields[0] == "tags") {
tags = unescape(fields[1]);
}
}
// Fill in the form
var form_index = 0;
var form = document.getElementsByTagName("form")[form_index];
if (form) {
// form.elements.namedItem("referer").value = form.elements.namedItem("url").value;
form.elements.namedItem("commentText").value = notes;
if (form.elements.namedItem("adult")) {
// If the page already exists then you may not be asked to fill in this field.
form.elements.namedItem("adult").value = "0";
form.elements.namedItem("adult").checked = true;
}
// /html/body/div[3]/div/div/div/div/div/form/div/div/div/div[2]/ul
// /html/body/div[3]/div/div/div/div/div/form/p[3]
var autotags = $x(".//p[3]", form);
if (autotags.length > 0) {
var tags = tags.split(',');
tag_str = 'Delicious tags: ';
tags.forEach(function(r) {
tag_str += "<a onclick=\"add_suggested_tag('"+r+"');\" href=\"javascript:void(0);\">"+r+"</a>, ";
});
var p = document.createElement('p');
p.innerHTML = tag_str;
p.className = "fieldLabel textNoEm";
insertAfter(p, autotags[0]);
}
}
var button = $x("//*[@id='submit_button']");
if(button.length > 0) {
button[0].focus();
}
}
// XPATH
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;
}
// InsertAfter
function insertAfter(newNode, node) {
// var link = document.getElementById("the_link");
// var icon = document.createElement("img");
// icon.src = "…";
// insertAfter(icon, link);
return node.parentNode.insertBefore(newNode, node.nextSibling);
}
function autoUpdateFromUserscriptsDotOrg(SCRIPT) {
// Update code from Junk Blocker: http://loonyone.livejournal.com/
// usage example
// autoUpdateFromUserscriptsDotOrg({
// name: 'RSS+Atom Feed Subscribe Button Generator',
// url: 'http://userscripts.org/scripts/source/688.user.js',
// version: "1.2",
// });
try {
if (!GM_getValue) return; // Older version of Greasemonkey. Can't run.
// avoid a flood of dialogs e.g. when opening a browser with multiple tabs set to homepage
// and a script with * includes or opening a tabgrop
var DoS_PREVENTION_TIME = 2 * 60 * 1000;
var isSomeoneChecking = GM_getValue('CHECKING', null);
var now = new Date().getTime();
GM_setValue('CHECKING', now.toString());
if (isSomeoneChecking && (now - isSomeoneChecking) < DoS_PREVENTION_TIME) return;
// check daily
var ONE_DAY = 24 * 60 * 60 * 1000;
var ONE_WEEK = 7 * ONE_DAY;
var TWO_WEEKS = 2 * ONE_WEEK;
var lastChecked = GM_getValue('LAST_CHECKED', null);
if (lastChecked && (now - lastChecked) < TWO_WEEKS) return;
GM_xmlhttpRequest({
method: 'GET',
url: SCRIPT.url + '?source', // don't increase the 'installed' count just for update checks
onload: function(result) {
if (!result.responseText.match(/@version\s+([\d.]+)/)) return; // did not find a suitable version header
var theOtherVersion = parseFloat(RegExp.$1);
if (theOtherVersion <= parseFloat(SCRIPT.version)) return; // no updates or older version on userscripts.orge site
if (window.confirm('A new version ' + theOtherVersion + ' of greasemonkey script "' + SCRIPT.name + '" is available.\nYour installed version is ' + SCRIPT.version + ' .\n\nUpdate now?\n')) {
GM_openInTab(SCRIPT.url); // better than location.replace as doing so might lose unsaved data
}
}
});
GM_setValue('LAST_CHECKED', now.toString());
} catch (ex) {
}
}
autoUpdateFromUserscriptsDotOrg({
name: 'Delicious Stumbles',
url: 'http://userscripts.org/scripts/source/12274.user.js',
version: "2.01",
});
if (document.location.host == "del.icio.us") {
if (document.location.href.match(/^http:\/\/del.icio.us\/.*?\?url=/)) {
deliciousSubmitOneSUFromExtension();
}
else {
GM_addStyle("#idt-delicious-stumbles { border: 1px solid #fc0; border-left: 0; border-right:0; background-color: #ffc; margin-top: 10px; padding: 3px 10px;} #idt-delicious-stumbles a { font-weight: bolder;}");
var div_array = document.getElementsByTagName('div');
if (typeof( window[ 'div_array' ] ) != "undefined") {
var start = document.getElementsByTagName('div')[0];
var div = document.createElement('div');
div.innerHTML = "<a href='http://InternetDuctTape.com' title='Visit InternetDuctTape to find more delicious scripts'>Delicious Stumbles</a>: Use <b>Tools >> Greasemonkey >> User Script Commands</b> to submit all bookmarks to StumbleUpon";
div.id = "idt-delicious-stumbles";
start.insertBefore(div, start.parentNode.nextSibling);
}
GM_registerMenuCommand('Submit del.icio.us bookmarks to StumbleUpon', deliciousSubmitAllSU);
deliciousAddLinksSU();
}
}
else if (document.location.host == "www.stumbleupon.com") {
handleStumbleUpon();
}
})();