通过IDM下载百度云的资源201709

参考:http://blog.csdn.net/nianqi4309/article/details/77875037

1、下载IDM,随便搜一份即可。下载插件:http://tampermonkey.net/
2、安装到google浏览器或者360浏览器。
3、点击插件,添加脚本,基本如下,完全覆盖即可,记得保存。
4、刷新百度云页面,出现一个新的按钮,点击普通下载以后,即可使用IDM进行下载,速度稳定的快。

// ==UserScript==
// @name         EX-百度云盘
// @namespace    [https://github.com/gxvv/ex-baiduyunpan/](https://github.com/gxvv/ex-baiduyunpan/)
// @version      0.1.7
// @description  [下载大文件] [批量下载] [文件夹下载] [百度网盘] [百度云盘] [百度云盘企业版] [企业版] [baidu] [baiduyun] [yunpan] [baiduyunpan] [eyun]
// @author       gxvv
// @license      MIT
// @supportURL   [https://github.com/gxvv/ex-baiduyunpan/issues](https://github.com/gxvv/ex-baiduyunpan/issues)
// @date         01/01/2017
// @modified     07/03/2017
// @match        *://[pan.baidu.com/disk/home*](http://pan.baidu.com/disk/home*)
// @match        *://[yun.baidu.com/disk/home*](http://yun.baidu.com/disk/home*)
// @match        *://[pan.baidu.com/s/*](http://pan.baidu.com/s/*)
// @match        *://[yun.baidu.com/s/*](http://yun.baidu.com/s/*)
// @match        *://[pan.baidu.com/share/link?*](http://pan.baidu.com/share/link?*)
// @match        *://[yun.baidu.com/share/link?*](http://yun.baidu.com/share/link?*)
// @match        *://[eyun.baidu.com/s/*](http://eyun.baidu.com/s/*)
// @run-at       document-end
// @grant        unsafeWindow
// @grant        GM_addStyle
// @grant        GM_info
// @require      [https://cdn.bootcss.com/clipboard.js/1.5.16/clipboard.min.js](https://cdn.bootcss.com/clipboard.js/1.5.16/clipboard.min.js)
// ==/UserScript==

(function(require, define, Promise) {
    'use strict';

    function showError(msg) {
        GM_addStyle('#errorDialog{position: fixed;top: 76.5px; bottom: auto; left: 423px; right: auto;background: #fff;border: 1px solid #ced1d9;border-radius: 4px;box-shadow: 0 0 3px #ced1d9;color: black;word-break: break-all;display: block;width: 520px;padding: 10px 20px;z-index: 9999;}#errorDialog h3{border-bottom: 1px solid #ced1d9;font-size: 1.5em;font-weight: bold;}');
        var $;
        try {
            $ = require('base:widget/libs/jquerypacket.js');
        } catch (e) {
            var div = document.createElement('div');
            $ = function(str) {
                div.innerHTML = str;
                div.onclick = function() {
                    this.remove();
                };
                return $;
            };
            $.on = function() {
                return {
                    appendTo: function() {
                        document.body.appendChild(div);
                    }
                };
            };
        }
        var $dialog = $('<div id="errorDialog">' +
            '<h3>EX-baiduyunpan:程序异常</h3>' +
            '<div class="dialog-body"><p>请尝试更新脚本或复制以下信息提交issue</p>' +
            '<p>Exception: ' + msg + '</p>' +
            '<p>Script Ver: ' + GM_info.script.version + '</p>' +
            '<p>TemperMonkey Ver: ' + GM_info.version + '</p>' +
            '<p>UA: ' + navigator.userAgent + '</p>' +
            '</div><hr><a class="close" href="javascript:;">关闭</a></div>');
        $dialog.on('click', '.close', function(event) {
            $dialog.remove();
        }).appendTo(document.body);
    }
    define('ex-yunpan:pageInfo', function(require) {
        var url = location.href;
        var currentPage = 'pan';
        var matchs = {
            '.*://[pan.baidu.com/disk/home.*](http://pan.baidu.com/disk/home.*)': 'pan',
            '.*://[yun.baidu.com/disk/home.*](http://yun.baidu.com/disk/home.*)': 'pan',
            '.*://[pan.baidu.com/s/.*](http://pan.baidu.com/s/.*)': 'share',
            '.*://[yun.baidu.com/s/.*](http://yun.baidu.com/s/.*)': 'share',
            '.*://[pan.baidu.com/share/link?.*](http://pan.baidu.com/share/link?.*)': 'share',
            '.*://[yun.baidu.com/share/link?.*](http://yun.baidu.com/share/link?.*)': 'share',
            '.*://[eyun.baidu.com/s/.*](http://eyun.baidu.com/s/.*)': 'enterprise'
        };
        var PAGE_CONFIG = {
            pan: {
                prefix: 'file-widget-1:',
                containers: ['.g-button:has(.icon-download):visible'],
                style: function() {
                }
            },
            share: {
                prefix: 'file-widget-1:',
                containers: [
                  '.KKtwaH .button-box>.g-button:has(.icon-download)',
                  '.module-share-top-bar .button-box>.g-button:has(.icon-download)'
                ],
                style: function() {
                    var styleList = [
                        '.KPDwCE .QxJxtg{z-index: 2;}',
                        '.module-share-header .slide-show-right{width: auto;}',
                        '.ex-yunpan-dropdown-button.g-dropdown-button.button-open .menu{z-index:41;}',
                        '.module-share-header .slide-show-header h2{width:230px;}',
                        '.KPDwCE .xGLMIab .g-dropdown-button.ex-yunpan-dropdown-button{margin: 0 5px;}'
                    ];
                    GM_addStyle(styleList.join(''));
                }
            },
            enterprise: {
                prefix: 'business-function:',
                containers: ['.button-box-container>.g-button:has(:contains("下载"))'],
                style: function() {
                    var styleList = [
                        '.ex-yunpan-dropdown-button .icon-download{background-image: url(/box-static/business-function/infos/icons_z.png?t=1476004014313);}',
                        '.ex-yunpan-dropdown-button .g-button:hover .icon-download{background-position: 0px -34px;}'
                    ];
                    GM_addStyle(styleList.join(''));
                }
            }
        };
        for (var match in matchs) {
            if (new RegExp(match).test(url) === true) {
                currentPage = matchs[match];
            }
        }
        return PAGE_CONFIG[currentPage];
    });
    define('ex-yunpan:downloadBtnInit', function(require) {
        var ctx = require('system-core:context/context.js').instanceForSystem;
        var $ = require('base:widget/libs/jquerypacket.js');
        var pageInfo = require('ex-yunpan:pageInfo');
        var prefix = pageInfo.prefix;
        var dServ = null;
        require.async(prefix + 'download/service/dlinkService.js', function(dlinkService) {
            dServ = dlinkService;
        });
        var exDlBtnConfig = {
            type: 'dropdown',
            title: 'EX-下载',
            resize: true,
            menu: [{
                title: '普通下载',
                'click': function() {
                    var start = require(prefix + 'download/start.js');
                    start.start(ctx);
                }
            }, {
                title: '复制链接',
                'click': function() {
                    var selectedList = ctx.list.getSelected();
                    if (selectedList.length === 0) return ctx.ui.tip({
                        mode: 'caution',
                        msg: '您还没有选择下载的文件'
                    });
                    ctx.ui.tip({
                        mode: 'loading',
                        msg: '开始请求链接...'
                    });
                    var foldersList = selectedList.filter(function(e) {
                        return e.isdir === 1;
                    });
                    var filesList = selectedList.filter(function(e) {
                        return e.isdir === 0;
                    });
                    var currentProduct = ctx.pageInfo.currentProduct;
                    if (!~['pan', 'share', 'enterprise'].indexOf(currentProduct)) {
                        return ctx.ui.tip({
                            mode: 'caution',
                            msg: '复制链接当前页面不可用',
                            hasClose: true,
                            autoClose: false
                        });
                    }
                    if (filesList.length > 0 && currentProduct !== 'enterprise') {
                        foldersList.unshift(filesList);
                    } else {
                        [].push.apply(foldersList, filesList);
                    }
                    var requestMethod;
                    if (currentProduct === 'pan') {
                        requestMethod = function(e, cb) {
                            dServ.getDlinkPan(dServ.getFsidListData(e), e.isdir === 1 ? 'batch' : 'nolimit', cb, undefined, undefined, 'POST');
                        };
                    } else {
                        var yunData = require((currentProduct === 'share' ? 'disk-share:widget/system' : 'page-common:widget') + '/data/yunData.js').get();
                        requestMethod = function(e, cb) {
                            dServ.getDlinkShare({
                                share_id: yunData.shareid,
                                share_uk: yunData.uk,
                                sign: yunData.sign,
                                timestamp: yunData.timestamp,
                                list: currentProduct === 'share' ? e : [e],
                                type: e.isdir === 1 ? 'batch' : 'nolimit'
                            }, cb);
                        };
                    }
                    var timeout = foldersList.length === 1 ?3e4 :3e3;
                    var promises = foldersList.map(function(e) {
                        return new Promise(function(resolve, reject) {
                            var timer = setTimeout(function() {
                                resolve($.extend({}, e));
                            }, timeout);
                            requestMethod(e, function(result) {
                                resolve($.extend({}, e.isdir === 1 ? e : {}, result));
                            });
                        });
                    });
                    Promise.all(promises).then(function(result) {
                        ctx.ui.hideTip();
                        var dlinks = [];
                        var needToRetry = result.filter(function(e) {
                            return e.errno !== 0;
                        });
                        if (needToRetry.length > 0) {
                            try {
                                dServ.dialog.hide();
                            } catch (ex) {}
                            ctx.ui.tip({
                                mode: 'caution',
                                msg: needToRetry.length + '个文件请求链接失败'
                            });
                        }
                        result.filter(function(e) {
                            return e.errno === 0;
                        }).forEach(function(e) {
                            if (e.isdir === 1) {
                                var dlink = e.dlink + "&zipname=" + encodeURIComponent('【文件夹】' + e.server_filename + '.zip');
                                dlinks.push(e.dlink && dlink);
                            } else {
                                [].push.apply(dlinks, (e.dlink || e.list || []).map(function(e) {
                                    return e.dlink;
                                }));
                            }
                        });
                        if (dlinks.length === 0) return ctx.ui.tip({
                            mode: 'caution',
                            msg: '复制失败:未获取到链接'
                        });
                        var clipboard = new Clipboard('.btn');
                        clipboard.on('success', function(e) {
                            ctx.ui.tip({
                                mode: 'success',
                                msg: '复制成功' + dlinks.length + '个文件'
                            });
                            e.clearSelection();
                            dialog.hide();
                            clipboard.destroy();
                        });
                        clipboard.on('error', function(e) {
                            ctx.ui.tip({
                                mode: 'caution',
                                msg: '复制失败'
                            });
                        });
                        var text = '<textarea id="bar" rows="' + ((dlinks.length>20 ?20 :dlinks.length) + 1) + '" style="width:100%;white-space: nowrap;">' + dlinks.join('\n') + '</textarea>';
                        var dialog = ctx.ui.confirm({
                            title: '复制链接',
                            body: text,
                            sureText: '复制',
                            onClose: function() {
                                clipboard && clipboard.destory && clipboard.destroy();
                            }
                        });
                        dialog.buttonIns[0].dom.attr({
                            'data-clipboard-action': 'copy',
                            'data-clipboard-target': '#bar'
                        }).addClass('btn').off();
                    }).catch(function(e) {
                        showError(e);
                    });
                }
            }],
            icon: 'icon-download'
        };
        var selector = pageInfo.containers.join();
        $(selector).each(function(i, e) {
            var exDlBtn = ctx.ui.button(exDlBtnConfig);
            $(e).after(exDlBtn.dom.addClass('ex-yunpan-dropdown-button'));
            exDlBtn.resizeButtonWidth();
        });
        pageInfo.style();
    });
    define('ex-yunpan:pluginInit.js', function(require, module, exports) {
        var ctx = require('system-core:context/context.js').instanceForSystem;
        var $ = require('base:widget/libs/jquerypacket.js');
        var pageInfo = require('ex-yunpan:pageInfo');
        var prefix = pageInfo.prefix;
        var dmPromise = new Promise(function(resolve, reject) {
            $(unsafeWindow).on('load', function() {
                reject('downloadManager.js');
            });
            require.async(prefix + 'download/service/downloadManager.js', function(dm) {
                dm.MODE_PRE_INSTALL = dm.MODE_PRE_DOWNLOAD;
                resolve();
            });
        });
        var gjcPromise = new Promise(function(resolve, reject) {
            $(unsafeWindow).on('load', function() {
                reject('guanjiaConnector.js');
            });
            require.async(prefix + 'download/service/guanjiaConnector.js', function(gjC) {
                gjC.init = function() {
                    setTimeout(function() {
                        ctx.ui.tip({
                            mode: 'caution',
                            msg: '检测到正在调用云管家,若脚本失效,请检查更新或提交issue',
                            hasClose: true,
                            autoClose: false
                        });
                    }, 5000);
                };
                resolve();
            });
        });
        var ddsPromise = new Promise(function(resolve, reject) {
            $(unsafeWindow).on('load', function() {
                reject('downloadDirectService.js');
            });
            require.async(prefix + 'download/service/downloadDirectService.js', function(dDS) {
                var $preDlFrame = null;
                var _ = dDS.straightforwardDownload;
                if (typeof _ !== 'function') return;
                dDS.straightforwardDownload = function() {
                    ctx.ui.tip({
                        mode: 'loading',
                        msg: '正在开始下载...'
                    });
                    if ($preDlFrame === null) {
                        setTimeout(function() {
                            var $frame = $('#pcsdownloadiframe');
                            if ($frame.length === 0) return;
                            $frame.ready(function(event) {
                                ctx.ui.hideTip();
                            });
                            $preDlFrame = $frame;
                        }, 1000);
                    }
                    _.apply(dDS, arguments);
                };
                resolve();
            });
        });
        Promise.all([dmPromise, gjcPromise, ddsPromise]).then(function() {
            try {
                require('ex-yunpan:downloadBtnInit');
                ctx.ui.tip({
                    mode: 'success',
                    msg: 'EX-baiduyunpan: 插件加载成功'
                });
            } catch (e) {
                ctx.ui.tip({
                    mode: 'caution',
                    msg: 'EX-baiduyunpan: 插件加载成功,按钮初始化失败',
                    autoClose: false,
                    hasClose: true
                });
            }
        }).catch(function(msg) {
            if(document.querySelector('#share_nofound_des') !== null) return;
            showError(msg + '加载失败');
        });
    });
    try {
        require('ex-yunpan:pluginInit.js');
    } catch (ex) {
        showError(ex);
    }
})(unsafeWindow.require, unsafeWindow.define, unsafeWindow.Promise);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容

  • 在此特此声明:一下所有链接均来自互联网,在此记录下我的查阅学习历程,感谢各位原创作者的无私奉献 ! 技术一点一点积...
    远航的移动开发历程阅读 11,074评论 12 197
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,365评论 25 707
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 23,666评论 8 183
  • 话说,这个题目很让人费解呐。 了,在汉语中有两类读音,“le”和“liao”,都有结束的含义,表过去时态。比如:开...
    曦露微漾阅读 374评论 0 0
  • 平铺直叙,太沉闷,要从最紧张刺激的部分先说起,再回溯过去发生的事情,务求一下子就有石破天惊的效果,这是讲故事的法门...
    木梦西阅读 303评论 0 0