您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
(Indowebster) automatically get download link
- // ==UserScript==
- // @name Indowebster GET Link
- // @namespace http://userscripts.org/scripts/show/69049
- // @include http://*.indowebster.com/*.html
- // @include http://*.indowebster.com/download/*
- // @include http://*.indowebster.com/downloads/*
- // @exclude http://ads.indowebster.com*
- // @version 13060830
- // @description (Indowebster) automatically get download link
- // @author idx (http://userscripts.org/users/idx)
- //
- // Indowebster Link Download
- //
- // Copyright (c) 2009, Idx
- // Released under the GPL license
- // http://www.gnu.org/copyleft/gpl.html
- // --------------------------------------------------------------------
- // Mod By: Idx
- // ==============
- //
- // mod.R-30 : 2013-06-08
- // recode
- //
- // mod.R-29 : 2012-11-03
- // reindent code
- // fix autodownload
- //
- //
- // --------------------------------------------------------------------
- // ==/UserScript==
- (function() {
- function main(){
- var gvar = function() {};
- gvar.vver = "R.30";
- gvar.apps_title = 'IDWS GET[Link] - '+gvar.vver;
- gvar.apps_src = '//userscripts.org/scripts/show/69049';
- gvar.__DEBUG__ = !1;
- var OPTIONS_BOX = {
- IDWS_AUTODOWNLOAD: ['1']
- }, KS = 'IDWS_';
- var GMSTORAGE_PATH = "GM_";
- var $D = function(q, root, single) {
- if(root && typeof root == "string") {
- root = $D(root, null, true);
- if(!root) {
- return null
- }
- }
- if(!q) {
- return false
- }
- if(typeof q == "object") {
- return q
- }
- root = root || document;
- if(q[0] == "#") {
- return root.getElementById(q.substr(1))
- }else {
- if(q[0] == "/" || q[0] == "." && q[1] == "/") {
- if(single) {
- return document.evaluate(q, root, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue
- }
- return document.evaluate(q, root, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
- }else {
- if(q[0] == ".") {
- return root.getElementsByClassName(q.substr(1))
- }
- }
- }
- return root.getElementsByTagName(q)
- };
- var GM_addGlobalScript = function (a, b, c) {
- var d = createEl("script", { type: "text/javascript"});
- if (isDefined(b) && isString(b)) d.setAttribute("id", b);
- if (a.match(/^https?:\/\/.+/)) d.setAttribute("src", a);
- else d.appendChild(createTextEl(a));
- if (isDefined(c) && c) {
- document.body.insertBefore(d, document.body.firstChild)
- } else {
- var e = document.getElementsByTagName("head");
- if (isDefined(e[0]) && e[0].nodeName == "HEAD") gvar.$w.setTimeout(function () {
- e[0].appendChild(d)
- }, 100);
- else document.body.insertBefore(d, document.body.firstChild)
- }
- return d
- };
- var GM_addGlobalStyle = function (a, b, c) {
- var d, e;
- if (a.match(/^https?:\/\/.+/)) {
- d = createEl("link", { type: "text/css", rel:'stylesheet', href:a });
- }else{
- d = createEl("style", { type: "text/css" });
- d.appendChild(createTextEl(a));
- }
- if (isDefined(b) && isString(b)) d.setAttribute("id", b);
- if (isDefined(c) && c) {
- document.body.insertBefore(d, document.body.firstChild)
- } else {
- e = document.getElementsByTagName("head");
- if (isDefined(e[0]) && e[0].nodeName == "HEAD") gvar.$w.setTimeout(function () {
- e[0].appendChild(d)
- }, 100);
- else document.body.insertBefore(d, document.body.firstChild)
- }
- return d
- };
- var rSRC = {
- getCSS: function(){
- return ''
- +'.wrap-actions{margin-top:-20px; padding:0; border:1px solid #ccc;}'
- +'.wrap-actions .btitle, .wrap-actions .btn_toggle_autodl, .title .btn_toggle_autodl{display:inline-block;}'
- +'.wrap-actions .btitle{background:#ddd; border-bottom:1px solid #ccc; padding:8px 0 5px 0; margin-bottom:20px;display:block;}'
- +'.wrap-actions .btitle a{font-size:14px; font-weight:bold; line-height:10px; display:inline-block; margin-left:10px;}'
- +'.btn_toggle_autodl{float:right;margin:7px 14px 0 0; font-size:11px;}'
- +'.btn_toggle_autodl input{width: 13px; height:13px; padding:0; margin:0; position: relative; top:-2px; vertical-align: bottom; *overflow: hidden;}'
- +'.btn_toggle_autodl label{display: block; text-indent: -15px;}'
- +'.title .btitle{display:inline-block;}'
- +'.title .btn_toggle_autodl{margin-top:3px;}'
- +'.title .btn_toggle_autodl input{top:-3px;}'
- +'.tips{color:#999; padding:5px;}'
- +'.hide{display:none}'
- +''
- ;
- },
- getSCRIPT: function(){
- return ''
- +'var gvar = gvar || {};'
- +'var $btntarget = ($ && $(".downloadBtn").length ? $(".downloadBtn").first().find("input").first() : null);'
- +'var currentTitle = $("title").first().text();'
- +''
- +'function setTitle(x){$("title").first().text(x)}'
- +'function clog(x){console && console.log(x)}'
- +'function g(x){return document.getElementById(x)}'
- +''
- +'function frameloaded(){'
- +'$btntarget && $btntarget.val("Please wait.........");'
- +'if( $btntarget.hasClass("color_red") )'
- +' $btntarget.addClass("color_blue").removeClass("color_red");'
- +'}'
- +'function sendMessage(msg, cb){'
- +'gvar.link = msg;'
- +'("function" == typeof cb) && cb();'
- +'}'
- +'function respondLink(){'
- +'$btntarget.parent().attr("href", gvar.link);'
- +'var isAudl = $("#btn_autodl").is(":checked");'
- +'isAudl && $("#directlink_iframe").attr("src", gvar.link);'
- +'setTitle("[R] "+currentTitle);'
- +'if( $.browser.webkit )'
- +' $(".wrap-actions").find(".tips").removeClass("hide");'
- +'}'
- +'function timerMessage(msg){'
- +'if( msg > 0 )'
- +' $btntarget.val("DOWNLOAD ["+msg+"]");'
- +'else '
- +' $btntarget.val("DOWNLOAD REDE").removeClass("color_blue color_red").addClass("color_green");'
- +'setTitle("["+msg+"] "+currentTitle)'
- +'}'
- },
- getSCRIPT_Framed: function(){
- return ''
- +'var currentTitle = $("title").first().text();'
- +'function setTitle(x){$("title").first().text(x)}'
- +'function storeLink(e){'
- +'var el = e.target||e,'
- +' data_link=$(el).attr("data-link"),'
- +' data_autodl = $(el).attr("data-autodl"),'
- +' data_insideframe = $(el).attr("data-insideframe");'
- +'if( data_insideframe )'
- +' parent.sendMessage(data_link, parent.respondLink);'
- +'else{'
- +' data_autodl && $("#directlink_iframe").attr("src", data_link);'
- +' setTitle( "[R] "+currentTitle)'
- +'}'
- +'}'
- +'function timerMessage(e){'
- +'var el = e.target||e,'
- +' data_remain = $(el).attr("data-remain"),'
- +' data_autodl = $(el).attr("data-autodl"),'
- +' data_insideframe = $(el).attr("data-insideframe");'
- +'if( data_insideframe ){'
- +' parent.timerMessage(data_remain);'
- +'}else{'
- +' setTitle( "["+data_remain+"] "+currentTitle)'
- +'}'
- +'}'
- }
- };
- //=== mini-functions
- // static routine
- function isDefined(x) { return !(x == null && x !== null); }
- function isUndefined(x) { return x == null && x !== null; }
- function isString(x) { return (typeof(x)!='object' && typeof(x)!='function'); }
- function trimStr(x) { return (typeof(x)=='string' && x ? x.replace(/^\s+|\s+$/g,"") : '') };
- function isLink(x) { return x.match(/((?:http(?:s|)|ftp):\/\/)(?:\w|\W)+(?:\.)(?:\w|\W)+/); }
- function dump(x){return ("undefined" != typeof JSON ? JSON.stringify(x) : x)}
- function createTextEl(a) {
- return document.createTextNode(a)
- }
- function createEl(a, b, c) {
- var d = document.createElement(a);
- for (var e in b) if (b.hasOwnProperty(e)) d.setAttribute(e, b[e]);
- if (c) d.innerHTML = c;
- return d
- }
- function getTag(name, parent) {
- if(isUndefined(parent)) {
- parent = document
- }
- return parent.getElementsByTagName(name)
- }
- function getValue(key, cb) {
- var data=OPTIONS_BOX[key];
- if( !data ) return;
- setTimeout(function(){
- var ret = GM_getValue(key,data[0]);
- if('function' == typeof cb)
- cb(ret);
- else if(cb)
- cb = ret;
- }, 0);
- }
- function setValue(key, value, cb) {
- var data=OPTIONS_BOX[key];
- if( !data ) return;
- setTimeout(function(){
- var ret = GM_setValue(key,value);
- if('function' == typeof cb)
- cb(ret);
- else if(cb)
- cb = ret;
- }, 1);
- }
- function ApiBrowserCheck() {
- if(typeof unsafeWindow == "undefined") {
- unsafeWindow = window
- }
- if(typeof GM_log == "undefined") {
- GM_log = function(msg) {
- try {
- unsafeWindow.console.log("GM_log: " + msg)
- }catch(e) {
- }
- }
- }
- var needApiUpgrade = false;
- if(window.navigator.appName.match(/^opera/i) && typeof window.opera != "undefined") {
- needApiUpgrade = true;
- gvar.isOpera = true;
- GM_log = window.opera.postError;
- show_alert("Opera detected...", 0)
- }
- if(typeof GM_setValue != "undefined") {
- var gsv;
- try {
- gsv = GM_setValue.toString()
- }catch(e) {
- gsv = ".staticArgs.FF4.0b"
- }
- if(gsv.indexOf("staticArgs") > 0) {
- gvar.isGreaseMonkey = true;
- gvar.isFF4 = false;
- show_alert("GreaseMonkey Api detected" + ((gvar.isFF4 = gsv.indexOf("FF4.0b") > 0) ? " on FF4.0b" : "") + "...", 0)
- }else {
- if(gsv.match(/not\s+supported/)) {
- needApiUpgrade = true;
- gvar.isBuggedChrome = true;
- show_alert("Bugged Chrome GM Api detected...", 0)
- }
- }
- }else {
- needApiUpgrade = true;
- show_alert("No GM Api detected...", 0)
- }
- gvar.noCrossDomain = gvar.isOpera || gvar.isBuggedChrome;
- if(needApiUpgrade) {
- GM_isAddon = true;
- show_alert("Try to recreate needed GM Api...", 0);
- var ws = null;
- try {
- ws = typeof unsafeWindow.localStorage
- }catch(e) {
- ws = null
- }
- if(ws == "object") {
- show_alert("Using localStorage for GM Api.", 0);
- GM_getValue = function(name, defValue) {
- var value = unsafeWindow.localStorage.getItem(GMSTORAGE_PATH + name);
- if(value == null) {
- return defValue
- }else {
- switch(value.substr(0, 2)) {
- case "S]":
- return value.substr(2);
- case "N]":
- return parseInt(value.substr(2));
- case "B]":
- return value.substr(2) == "true"
- }
- }
- return value
- };
- GM_setValue = function(name, value) {
- switch(typeof value) {
- case "string":
- unsafeWindow.localStorage.setItem(GMSTORAGE_PATH + name, "S]" + value);
- break;
- case "number":
- if(value.toString().indexOf(".") < 0) {
- unsafeWindow.localStorage.setItem(GMSTORAGE_PATH + name, "N]" + value)
- }
- break;
- case "boolean":
- unsafeWindow.localStorage.setItem(GMSTORAGE_PATH + name, "B]" + value);
- break
- }
- };
- GM_deleteValue = function(name) {
- unsafeWindow.localStorage.removeItem(GMSTORAGE_PATH + name)
- }
- }else {
- if(!gvar.isOpera || typeof GM_setValue == "undefined") {
- show_alert("Using temporarilyStorage for GM Api.", 0);
- gvar.temporarilyStorage = new Array;
- GM_getValue = function(name, defValue) {
- if(typeof gvar.temporarilyStorage[GMSTORAGE_PATH + name] == "undefined") {
- return defValue
- }else {
- return gvar.temporarilyStorage[GMSTORAGE_PATH + name]
- }
- };
- GM_setValue = function(name, value) {
- switch(typeof value) {
- case "string":
- ;
- case "boolean":
- ;
- case "number":
- gvar.temporarilyStorage[GMSTORAGE_PATH + name] = value
- }
- };
- GM_deleteValue = function(name) {
- delete gvar.temporarilyStorage[GMSTORAGE_PATH + name]
- }
- }
- }
- if(typeof GM_openInTab == "undefined") {
- GM_openInTab = function(url) {
- unsafeWindow.open(url, "")
- }
- }
- if(typeof GM_registerMenuCommand == "undefined") {
- GM_registerMenuCommand = function(name, cmd) {
- GM_log("Notice: GM_registerMenuCommand is not supported.")
- }
- }
- if(!gvar.isOpera || typeof GM_xmlhttpRequest == "undefined") {
- show_alert("Using XMLHttpRequest for GM Api.", 0);
- GM_xmlhttpRequest = function(obj) {
- var request = new XMLHttpRequest;
- request.onreadystatechange = function() {
- if(obj.onreadystatechange) {
- obj.onreadystatechange(request)
- }
- if(request.readyState == 4 && obj.onload) {
- obj.onload(request)
- }
- };
- request.onerror = function() {
- if(obj.onerror) {
- obj.onerror(request)
- }
- };
- try {
- request.open(obj.method, obj.url, true)
- }catch(e) {
- if(obj.onerror) {
- obj.onerror({readyState:4, responseHeaders:"", responseText:"", responseXML:"", status:403, statusText:"Forbidden"})
- }
- return
- }
- if(obj.headers) {
- for(name in obj.headers) {
- request.setRequestHeader(name, obj.headers[name])
- }
- }
- request.send(obj.data);
- return request
- }
- }
- }
- GM_getIntValue = function(name, defValue) {
- return parseInt(GM_getValue(name, defValue), 10)
- }
- }
- function clog(msg) {
- if(!gvar.__DEBUG__) {
- return
- }
- show_alert(msg)
- }
- function show_alert(msg, force) {
- if(!gvar.__DEBUG__) {
- return
- }
- if(arguments.callee.counter) {
- arguments.callee.counter++
- }else {
- arguments.callee.counter = 1
- }
- GM_log("(" + arguments.callee.counter + ") " + msg);
- if(force == 0) {
- return
- }
- }
- // end of std-func
- function create_trans_iframe(link) {
- var $ifrm = $("#fake_iframe"),
- styles = gvar.ninja_styles;
- if( !$ifrm.length ) {
- $('<iframe id="fake_iframe" src="'+link+'" style="'+styles+'" onload="parent.frameloaded()"></iframe>')
- .prependTo($('body'));
- create_directlink_iframe();
- }else {
- $ifrm.attr('src', link);
- }
- }
- function create_directlink_iframe() {
- var $ifrm = $("#directlink_iframe"),
- styles = gvar.ninja_styles;
- if( !$ifrm.length ) {
- $('<iframe id="directlink_iframe" src="javascript:;" style="'+styles+'"></iframe>')
- .prependTo($('body'));
- }
- }
- function is_download_page(){
- return /\/download\//.test(location.href);
- }
- function prefetch_download() {
- clog('insed prefetch_download');
- $.post(gvar.prefetch.prefetchUri, gvar.prefetch.prefetchParams, function(ret){
- if( ret ){
- $('#btn_timer')
- .attr('data-remain', 0)
- .trigger('click')
- ;
- gvar.sTryCounter && clearInterval(gvar.sTryCounter);
- $('#btn_storelink')
- .attr('data-link', ret)
- .trigger('click')
- ;
- }
- })
- }
- function start_Main(){
- clog('start_Main');
- var $downloadBtn = $('.downloadBtn'),
- is_inside_iframe = ( window !== window.top )
- ;
- GM_addGlobalStyle(rSRC.getCSS(), 'parent-style', true);
- if( is_download_page() ){
- $downloadBtn.length && (function($el){
- // do what and then...
- GM_addGlobalScript(rSRC.getSCRIPT(), 'parent-script', true);
- $downloadBtn.closest('.block')
- .wrap($('<div class="wrap-actions"></div>'));
- $('.wrap-actions')
- .prepend($('<div class="btitle"><a href="'+gvar.apps_src+'" target="_blank">'+gvar.apps_title+'</a></div>'))
- .prepend($('<div class="btn_toggle_autodl"><label for="btn_autodl"><input id="btn_autodl" type="checkbox" '+(gvar.settings.auto_dl ? ' checked="checked"':'')+' /> Auto Download<label></div>'))
- .append('<div class="tips hide">*When "Download Rede" and download is not working, try it with "Save Link As.."</div>')
- ;
- window.setTimeout(function(){
- create_trans_iframe($el.href);
- }, 234);
- })($downloadBtn[0]);
- }
- else{
- // assumed is page of /downloads/
- GM_addGlobalScript(rSRC.getSCRIPT_Framed(), 'iframe-script', true);
- var $tgt_title = $('.alpha.omega>h6.title');
- $tgt_title.wrapInner('<div class="btitle" />');
- $tgt_title.find('.btitle').html('<a href="'+gvar.apps_src+'" target="_blank">'+gvar.apps_title+'</a>');
- $tgt_title
- .append($('<div class="btn_toggle_autodl"><label for="btn_autodl"><input id="btn_autodl" type="checkbox" '+(gvar.settings.auto_dl ? ' checked="checked"':'')+'/> Auto Download<label></div>'))
- ;
- clog('we are on downloads');
- var $bodyContainer = $('#bodyContainer'),
- $scripts = getTag('script', $bodyContainer.get(0)),
- $targetScript = null
- ;
- for(var i=0; i<$scripts.length; ++i){
- if( String($scripts[i].innerHTML).match(/\$\.post\b/) ){
- $targetScript = $scripts[i]; break;
- }
- }
- if( $targetScript ){
- var re = new RegExp('\\$\\.p'+''/*_^_^V_*/+'o'+'st\\([\\\'\\\"]([^\\\'\\\"]+).(?:\\s+)?,(?:\\s+)?(\\{[^\\}]+.)', "");
- if( cucok = re.exec($targetScript.innerHTML) ){
- var params_;
- try{
- params_ = eval('('+cucok[2]+')');
- }
- catch(e){params_={}}
- gvar.prefetch = {
- prefetchUri: cucok[1],
- prefetchParams: params_
- };
- window.setTimeout(function(){
- prefetch_download();
- }, 345);
- window.setTimeout(function(){
- $downloadBtn = $('#downloadBtn');
- var cucok, remain;
- gvar.remain = 25;
- if(cucok = /\s\((\d+)s\)/.exec($downloadBtn.val()) ){
- remain = cucok[1];
- gvar.remain = remain;
- }
- }, 1);
- if( !is_inside_iframe )
- create_directlink_iframe();
- gvar.sTryCounter = setInterval(function(){
- var $tgt = $('#btn_timer');
- if( gvar.remain > 0 ){
- $tgt
- .attr('data-remain', gvar.remain)
- .trigger('click')
- ;
- }
- else{
- clearInterval(gvar.sTryCounter);
- }
- $tgt.val(gvar.remain);
- gvar.remain--;
- }, 1000);
- }
- else{
- clog('regex failed');
- }
- }
- else{
- clog('targetScript not found');
- }
- $('<input id="btn_storelink" data-autodl="'+(gvar.settings.auto_dl ? '1':'')+'" data-insideframe="'+(is_inside_iframe ? '1':'')+'" data-link="" type="button" onclick="return storeLink(this)" value="StoreLink" />')
- .appendTo($bodyContainer);
- $('<input id="btn_timer" data-autodl="'+(gvar.settings.auto_dl ? '1':'')+'" data-insideframe="'+(is_inside_iframe ? '1':'')+'" type="button" onclick="return timerMessage(this)" value="tickTimer" />')
- .appendTo($bodyContainer);
- }
- // common events
- $('#btn_autodl').click(function(){
- var isChecked = $(this).is(":checked");
- setValue(KS + 'AUTODOWNLOAD', (isChecked ? '1':'0'), function(){
- gvar.settings.auto_dl = isChecked;
- $('#btn_storelink').attr('data-autodl', isChecked ? '1':'');
- $('#btn_timer').attr('data-autodl', isChecked ? '1':'');
- });
- })
- }
- (function init(){
- ApiBrowserCheck();
- gvar.settings = {};
- gvar.ninja_styles = 'position:absolute!important; overflow:hidden; left:-99999; height:0!important; width:0;';
- //gvar.settings.auto_dl = !1;
- // getSettings
- getValue(KS + 'AUTODOWNLOAD', function(ret){
- gvar.settings.auto_dl = (ret && ret=='1' ? true:false);
- var destination = $('.block>h1.title:first,.alpha.omega>h6.title').offset().top,
- scOffset = 30,
- delay = 350,
- landed = 0
- ;
- $("html:not(:animated),body:not(:animated)").animate({ scrollTop: (destination-scOffset)}, delay, function() {
- if(landed) return;
- start_Main();
- landed = 1;
- });
- });
- })();
- }
- // main
- function addJQuery(callback) {
- var script = document.createElement("script");
- script.setAttribute("src", location.protocol + "\/\/ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");
- script.addEventListener('load', function() {
- var script = document.createElement("script");
- script.textContent = "(" + callback.toString() + ")();";
- document.body.appendChild(script);
- }, false);
- document.body.appendChild(script);
- }
- addJQuery( main );
- })();
- /* Mod By Idx. */