Tumtaster

By Bjorn Stromberg Last update Jul 16, 2008 — Installed 229 times.
// ==UserScript==
// @name           Tumtaster
// @namespace      bjornstar
// @description    This script creates links to download mp3's from audio posts on Tumblr.
// @include        http://*.tumblr.com/*
// @include        http://bjornstar.com/*
// @exclude        http://www.tumblr.com/show/text/*
// @exclude        http://www.tumblr.com/show/photos/*
// @exclude        http://www.tumblr.com/show/quotes/*
// @exclude        http://www.tumblr.com/show/videos/*
// @exclude        http://www.tumblr.com/show/links/*
// @exclude        http://www.tumblr.com/show/chats/*
// @exclude        http://www.tumblr.com/dashboard/iframe*
// ==/UserScript==

function addGlobalStyle(css) {
  var elmHead, elmStyle;
  elmHead = document.getElementsByTagName('head')[0];
  elmStyle = document.createElement('style');
  elmStyle.type = 'text/css';
  elmHead.appendChild(elmStyle);
  elmStyle.innerHTML = css;
}

var tumblr_ico = 'data:image/gif;base64,R0lGODlhEAAQAPcAAE5SVv///xkbHx8iJx0gJA0OEB0gJSsvNS0xOC4zOg4QEicrMQkKDENERERERAsMDRUXGgcICgcJCkxPUxseIRsdIhESFURISzA1Ow4QEw8QEgwOECUpLhsdISotM0hMTxETFQsMDh8iJhMUFycrMDA0Ow8REwYGBzM4PxocISQnK8bHyCktM1lcXx0fIQ0ODxEUFgwNDy0wOE1RVV5hZVxfY3V2dnR1dhESFEZJTgkJC1xeYiAjKWZnZyYmJxMVFgYGCBcZHTA1PGFkaTE2PSktNKanqCQoLTY7QyYpLiMmLAwMDx0fJR0fJAQEBCYoLiEkKRcYHBIUFwwNEHJzdgoKC2Vna4WFhg0OESElKTY6QTQ5QCUpLyElKqOkpDQ5QSIkKQoLCywxOExQVImKiyMnLAMEBC4zOTc4ORseIjE2PjU6QisvNhcZHAcICRYYG9DQ0BocHQsLDiIkKgoLDVpcYAUFBhASFUNDRCEjJhUWGcnKywQFBnp7gEpOUtTU1EVGR4GBgUZKTfDw8BASFDI2Pi8zOSMnK4GBggICAzI4PyEkKkdKThwfIyQnLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAQABAAAAj/AJFo+YKiUIkzCA6wIPHEUZcBBtYAmEixYkUKWwCowZAAARsPCzgcWiSiCQABigBgMDSkT40ddVpYoZImBYAoRAB03BOgp89Bed4A0CMEgJgcAYzE6QnIRoAeFiaMSADgAI0VLkz0bBDCy40NHyzIAFCESyMIAno60ABiCpYPGg4AWHCEBwEDahX8AJFhTAEPADiUASOCwNYCMO4oABBiAQAlcyB26IlnCaEMGwBUSQIgC8QKf3rCQVPgxQMAblQAGECggwAyVxAF8kHnQRgAJ6AAYEJBQJARMXREkMCAQQQAfAZYnMDowgVBfmZMNEOggoA2EKTgUFBADgMJQOw4A0kUEAA7';
var tumtaster_style = 'background-image:url('+tumblr_ico+'); background-repeat:no-repeat; background-position: 6px 5px; line-height:27px; height:27px; width:207px; vertical-align:middle; font-size:9px; display:block; text-align:right; margin-top:1px; font-family:helvetica,arial,sans-serif;';
if (location.hostname=='www.tumblr.com') {
  tumtaster_style = tumtaster_style + ' border:solid 1px #b1cbdc;';
}

try {
  document.styleSheets[0].insertRule('a.tumtaster {'+tumtaster_style+'}', 0);
} catch (e) {
  addGlobalStyle('a.tumtaster {'+tumtaster_style+'}');
}


var song_embed = document.getElementsByTagName('embed');
for (var i=0;i<song_embed.length;i++) {
  if (song_embed[i].getAttribute('src').indexOf(location.hostname) >= 0) {
    var song_url = song_embed[i].getAttribute('src').replace('http://'+location.hostname+'/swf/audio_player.swf?audio_file=','');
    var song_bgcolor = song_url.substring(song_url.length-6);
    var song_color = '4c4c4c';

    song_url = song_url.replace('&color='+song_bgcolor,'?plead=please-dont-download-this-or-our-lawyers-wont-let-us-host-audio');

    if (song_url.indexOf('audio_player_black') >= 0) {
      song_url = song_url.replace('http://'+location.hostname+'/swf/audio_player_black.swf?audio_file=','');
      song_bgcolor = '000000';
      song_color = 'FFFFFF';
    }
    
    var dl_a = document.createElement('a');
    dl_a.setAttribute('href', song_url);
    dl_a.setAttribute('style', 'background-color: #'+song_bgcolor+'; text-decoration:none; color: #'+song_color+';');
    dl_a.setAttribute('class', 'tumtaster');
    dl_a.innerHTML = 'Click to download&nbsp;&nbsp;';
    song_embed[i].parentNode.parentNode.appendChild(dl_a);
  }
}