cdTube Mp3 Convert For Vixy

By bluerabbit Last update May 28, 2007 — Installed 130 times.
// ==UserScript==
// @name		  cdTubeMp3ConvertForVixy
// @namespace	  http://d.hatena.ne.jp/bluerabbit/
// @include		  http://pulpsite.net/cdtube/*
// @include		  http://vixy.net/?u=*
// @description    cdTube Mp3 Convert For Vixy
// @version        0.0.1
// Released under the GPL license
//  http://www.gnu.org/copyleft/gpl.html

(function() {

	// -- [Main] ----------------------------------------------------------------------
	function main() {
		var url = window.location.href.toString();
		if (url.startsWith("http://pulpsite.net/cdtube/")) {
			cdtube();
		} else if (url.startsWith("http://vixy.net/") != null ){
			vixy();
		}
	}
   
	function cdtube() {
		var elements = $X("//div[@class='entry-body']");
		var entryHeaderElements = $X("//h3[@class='entry-header']");
		for (var i = 0; i < elements.length; i++) {
			var video_id = elements[i].childNodes[1].firstChild.value;
			if (!video_id) {
				continue;
			}
			var vixy_url = 'http://vixy.net/?u=' + escape('http://youtube.com/watch?v=' + video_id.split('/')[4]);
			var option = '&' + escape(entryHeaderElements[i].innerHTML); // titleName
			vixy_url += option;
			var link = '<div style="width:425px; border-bottom: 1px solid #CCC; margin-bottom: 10px; font-size: small; background-color: lightSlateGray; color: #FFF;">' +
					    '<p style="margin:0px;padding: 5px;text-align:center;">' +
					    '<img id="downloadIcon" style="width:20px; height:20px;"><a href="' + vixy_url + '" target="_blank" style="letter-spacing:8px; color:#FFF; font-weight:bold; font-size:16px;">Save as MP3 by vixy.net</a>' +
					    '</p></div>';
			entryHeaderElements[i].innerHTML += link;	

			$('downloadIcon').src = 'data:image/png;base64,'+
					    'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0'+
					    'U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHbSURBVDjLpZM/a1RBFEfPnfciq4uChLgr'+
					    'WChaihBYbAxqBD+AgrGwVBDRxipgH1AMEQJpbawU9SvYCRaiEmOaBUkRDRYBwf3zZt691+K9DWuX'+
					    'xYELwzCce37MXHF3/mfJtYcv789d7jzZ7XvTHTDDzVBT3Bxzw1Uxd1wVNePIgdTb3NxefLuysJZ3'+
					    'LnRWpxrN0GpM1LjZ6+sqsJb3k4f+7p+J1QfJA0Du6izdOjMx4M7jLSqAGwCxVBxwc9TAcMwcNUNL'+
					    'r8qNqM6p9mHUtAJQv4IEQdzxILg4YkIIgkhARJHMySyQl9V9K2vAiBQAFwGBzMEEzJzMIUhGLqDi'+
					    'aKiMTa2OYPU/EAH3f0Ai4OqYgAsQhMyyCjCKMNpUDKk2YyDLhcV3t0mxJMZEGiZe3HyDWWUQypT2'+
					    'DEYAkbp9Ha0YJi6dnGf+9BUG/QKAMpV1hDpLBvhYlHGjYlBQlAVREw1psPlzA68N8pEKgNQ16r78'+
					    'folvP9aZOXiMYRmJGpk52uLB87ukvAXcIN/+vvXq3rO0YKqYGqqKmaEpYX6WeGKDQ9MFRRoSNbLz'+
					    'a4fe7ymOl9dfA8h+pvHq8sUv7en2uRgT3W7388en67N71vsd5/OPZj+kYUqfVr7OjZ//BRjUGmnY'+
					    'sJxdAAAAAElFTkSuQmCC';
		}
	}

	function vixy() {
		var param = location.search.substr(1).split("&");
		if (param.length > 1) {
			$('format').value = '.mp3';
			var title = unescape(param[1]);
			title = title.substring(5, title.length) + '.mp3';
			$('header').appendChild($N('input', 
									{'type':'text',
									 'value':title,
									 'size':title.length*2}));
			unsafeWindow.flvdlui.on_start();
		}
	}


// -- [Templete] ----------------------------------------------------------------------

/*----------------------------------------------------------------------------
 * Option
 *--------------------------------------------------------------------------*/

// Firefox log
var DEBUG = true;

/*----------------------------------------------------------------------------
 * Function
 *--------------------------------------------------------------------------*/

// Firefox log api
function log() {
	if (!DEBUG) return;
	unsafeWindow.console.log.apply(unsafeWindow.console, Array.slice(arguments)) 
};
function ok() { log('ok'); };


/** DOM shortcut method **/
function $(element) {
	if (typeof element == 'string') {
		return document.getElementById(element);
 		}
	return element; 
}

function $N (name, attr, childs) {
    var ret = document.createElement(name);
    for (k in attr) {
        if (!attr.hasOwnProperty(k)) continue;
        v = attr[k];
        if (k == "class") {
            ret.className = v;
        } else {
            ret.setAttribute(k, v);
        }
    }
    switch (typeof childs) {
        case "string": {
            ret.appendChild(document.createTextNode(childs));
            break;
        }
        case "object": {
            for (var i = 0, len = childs.length; i < len; i++) {
                var child = childs[i];
                if (typeof child == "string") {
                    ret.appendChild(document.createTextNode(child));
                } else {
                    ret.appendChild(child);
                }
            }
            break;
        }
    }
    return ret;
}

function $X (exp, context) {
    if (!context) context = document;
    var resolver = function (prefix) {
        var o = document.createNSResolver(context)(prefix);
        return o ? o : (document.contentType == "text/html") ? "" : "http://www.w3.org/1999/xhtml";
    }
    var exp = document.createExpression(exp, resolver);

    var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
    switch (result.resultType) {
        case XPathResult.STRING_TYPE : return result.stringValue;
        case XPathResult.NUMBER_TYPE : return result.numberValue;
        case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
        case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
            result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
            var ret = [];
            for (var i = 0, len = result.snapshotLength; i < len ; i++) {
                ret.push(result.snapshotItem(i));
            }
            return ret;
        }
    }
    return null;
}
Object.prototype.indexOf = function (object) {
    for (var i = 0, length = this.length; i < length; i++)
      if (this[i] == object) return i;
    return -1;
}
String.prototype.startsWith = function (pattern) {
    return this.indexOf(pattern) === 0;
}

// add event
window.addEventListener('load', function(){main();}, false);

})();