// ==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);
})();