您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Simple media download script
当前为
// ==UserScript== // @name Inject2Download // @namespace http://lkubuntu.wordpress.com/ // @version 0.1 // @description Simple media download script // @author Anonymous Meerkat // @include * // @grant none // @run-at document-start // ==/UserScript== (function() { "use strict"; // Helper functions function show_url(namespace, url, description) { if (!description) description = ""; var newurl = decodeURIComponent(url); var text = "[" + namespace + "] " + description + ": "; console.log(text + newurl); var el = document.getElementById("i2d-popup"); if (!el) { el = document.createElement("div"); //el.style.position = "absolute"; el.style.width = "max(60%, 100em)"; el.style.height = "max(60%, 100em)"; el.style.maxWidth = "100%"; el.style.maxHeight = "100%"; el.style.background = "white"; el.style.top = "0px"; el.style.left = "0px"; el.style.zIndex = 999999; el.style.color = "black"; el.style.overflow = "scroll"; el.ondblclick = function() { el.parentElement.removeChild(el); }; el.innerHTML = "Double click to close<br />"; el.id = "i2d-popup"; document.body.appendChild(el); } el.innerHTML += text + "<a href='" + newurl + "'>" + newurl + "</a><br />"; // XXX: why is this needed? test: http://playbb.me/embed.php?w=718&h=438&vid=at/nw/flying_witch_-_01.mp4, animeplus.tv document.body.removeChild(el); el.style.position = "absolute"; document.body.appendChild(el); } // Injecting functions var get_script_str = function(f) { return f.toString().replace(/^function.*{|}$/g, ''); }; function add_script(s, el) { var script_body = "(function() {\n" + s + "\n})();"; var myscript = document.createElement('script'); myscript.className = "i2d"; myscript.innerHTML = script_body; if (el) { el.appendChild(myscript); } else { document.head.appendChild(myscript); } } function inject(variable, newvalue) { console.log("[i2d] injecting " + variable); add_script(show_url.toString() + "\n" + "if (!(" + variable + ".INJECTED)) {\n" + "var oldvariable = window." + variable + ";\n" + "var oldvariable_keys = Object.keys(oldvariable);\n" + "window." + variable + " = " + newvalue.toString() + ";\n" + "for (var i = 0; i < oldvariable_keys.length; i++) {\n" + " window." + variable + "[oldvariable_keys[i]] = oldvariable[oldvariable_keys[i]];\n" + "}\n" + "window." + variable + ".INJECTED = true;\n" + "}"); } // Main code function i2d_main(e) { if (e) { if (!e.tagName || e.tagName.toLowerCase() !== "script") return; if ((e.className === "i2d")) { return; } } if ("soundManager" in unsafeWindow && !unsafeWindow.soundManager.INJECTED) { inject("soundManager.createSound", function(arg1, arg2) { if (typeof arg1 === "string") show_url("soundManager", arg2); else show_url("soundManager", arg1.url); return oldvariable.apply(this, arguments); }); } if ("jwplayer" in unsafeWindow && !unsafeWindow.jwplayer.INJECTED) { inject("jwplayer", function() { var result = oldvariable.apply(this, arguments); var old_jwplayer_setup = result.setup; result.setup = function() { if (typeof arguments[0] === "object") { var x = arguments[0]; if ("file" in x) { show_url("jwplayer", x.file); } if ("streamer" in x) { show_url("jwplayer", x.streamer, "stream"); } if ("modes" in x) { for (var i = 0; i < x.modes.length; i++) { // TODO: support more? if ("type" in x.modes[i] && x.modes[i].type === "html5") { if ("config" in x.modes[i] && "file" in x.modes[i].config) { show_url("jwplayer", x.modes[i].config.file); } } } } var check_sources = function(x) { if ("sources" in x) { if (x.sources instanceof Array) { for (var i = 0; i < x.sources.length; i++) { if (!("file" in x.sources[i])) continue; if ("label" in x.sources[i]) show_url("jwplayer", x.sources[i].file, x.sources[i].label); else show_url("jwplayer", x.sources[i].file); } } else { if ("file" in x.sources) show_url("jwplayer", x.sources.file); } } } check_sources(x); if ("playlist" in x && x.playlist instanceof Array) { for (var i = 0; i < x.playlist.length; i++) { check_sources(x.playlist[i]); } } } return old_jwplayer_setup.apply(this, arguments); }; return result; }); } if ("flowplayer" in unsafeWindow && !unsafeWindow.flowplayer.INJECTED) { inject("flowplayer", function() { if (arguments.length >= 3 && typeof arguments[2] === "object") { if ("clip" in arguments[2] && "url" in arguments[2].clip) { show_url("flowplayer", arguments[2].clip.url); } if ("playlist" in arguments[2] && arguments[2].playlist instanceof Array) { for (var i = 0; i < arguments[2].playlist.length; i++) { if ("url" in arguments[2].playlist[i]) { var oururl = arguments[2].playlist[i].url; if (!oururl.match(/\.xml$/)) show_url("flowplayer", oururl); } if ("bitrates" in arguments[2].playlist[i]) { var bitrates = arguments[2].playlist[i].bitrates; for (var j = 0; j < bitrates.length; j++) { if ("url" in bitrates[j]) { var description = ""; if (bitrates[j].isDefault) description += "default:"; if (bitrates[j].sd) description += "sd:"; if (bitrates[j].hd) description += "hd:"; if (bitrates[j].bitrate) description += bitrates[j].bitrate; show_url("flowplayer", bitrates[j].url, description); } } } } } } var result = oldvariable.apply(this, arguments); if (!result) return result; var old_fplayer_addclip = result.addClip; result.addClip = function() { if (arguments.length > 0 && typeof arguments[0] === "object" && "url" in arguments[0]) show_url("flowplayer", arguments[0].url); return old_fplayer_addclip.apply(this, arguments); }; return result; }); inject("$f", function() {return flowplayer.apply(this, arguments)}); } if ("videojs" in unsafeWindow && !unsafeWindow.videojs.INJECTED) { inject("videojs", function() { if (arguments.length > 0 && typeof arguments[0] === "string") { var my_el = document.getElementById(arguments[0]); if (!my_el) my_el = document.querySelector(arguments[0]); if (my_el) { if (my_el.src) { show_url("videojs", my_el.src); } for (var i = 0; i < my_el.children.length; i++) { if (my_el.children[i].tagName.toLowerCase() === "source") { if (my_el.children[i].src) { show_url("videojs", my_el.children[i].src, my_el.children[i].getAttribute("label")); } } } } } var result = oldvariable.apply(this, arguments); var old_videojs_src = result.src; result.src = function() { if (arguments.length > 0 && typeof arguments[0] === "object") { if ("src" in arguments[0]) { show_url("videojs", arguments[0].src); } } return old_videojs_src.apply(this, arguments); }; return result; }); add_script(show_url.toString() + get_script_str(function() { document.addEventListener("DOMContentLoaded", function() { var els = document.getElementsByClassName("video-js"); for (var i = 0; i < els.length; i++) { var my_el = els[i]; if (my_el.tagName.toLowerCase() === "video") { if (!my_el.getAttribute('data-setup')) { continue; } if (my_el.src) { show_url("videojs", my_el.src); } for (var i = 0; i < my_el.children.length; i++) { if (my_el.children[i].tagName.toLowerCase() === "source") { if (my_el.children[i].src) { show_url("videojs", my_el.children[i].src, my_el.children[i].getAttribute("label")); } } } } } }); })); } } i2d_main(); window.addEventListener("afterscriptexecute", function(e) { i2d_main(e.target); }); })();