微博视频下载助手(AI扬葱中院研究所)

微博视频旁边自动会展示下载按钮,点击即可下载

// ==UserScript==
// @name         微博视频下载助手(AI扬葱中院研究所)
// @version      1.0.2
// @description  微博视频旁边自动会展示下载按钮,点击即可下载
// @author       AI扬葱中院研究所
// @match        http*://weibo.com/*
// @match        http*://*.weibo.com/*
// @require      http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/downloadjs/1.4.8/download.js
// @iconURL      https://img.alicdn.com/imgextra/i1/2216837746626/O1CN01KT1Fpu1yolEVCQ1vQ_!!2216837746626.jpg
// @grant        GM_log
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @grant        GM_openInTab
// @license      MIT
// @namespace https://greasyfork.org/zh-CN/users/1225026-mr-yangyang
// ==/UserScript==

// 将本内容直接复制粘贴到油猴中即可使用.
(function () {
    'use strict';

    /**
     * 查找视频标签<video>
     * 注意事项:因为微博的 html 内容都是通过 js 动态加载的,而且随着滚动条下拉,加载的内容也会更多,
     * 所以采用定时器持续查找视图标签。
     */
    function findVideoEle() {
        setInterval(function(){
            let videoJQList = $("video");
            if(videoJQList.length > 0 ){
                console.log("可下载视频个数:"+ videoJQList.length);
                videoJQList.each(function (index) {
                    if($(this).attr("src")){
                        // 向视频旁边添加【下载】按钮
                        appendDownloadEle($(this));
                    }
                });
            }
        }, 3000);
    }

    /**
     * 向视频上边添加【下载】按钮
     */
    function appendDownloadEle(videoJQ) {
        let downloadIdAttrName = videoJQ.attr("id") + "_download";
        if($("#" + downloadIdAttrName).length <= 0) {
            // 【下载】按钮
            let downloadJQ = $("<a>下 载</a>");
            downloadJQ.css({
                'background-color': 'rgba(255,130,0, 1)',
                "color": "#fff",
                'font-size': '20px',
                'cursor': 'pointer',
                "border-radius": "10px",
                "padding-left": "10px",
                "padding-right": "10px",
                "margin-bottom": "2px"
            });
            downloadJQ.attr("id", downloadIdAttrName);
            downloadJQ.attr("href", videoJQ.attr("src"));
            downloadJQ.attr("target", "_balnk");
            videoJQ.parent().before(downloadJQ);
            // console.log(videoJQ.attr("id") +" 添加下载按钮:" + downloadIdAttrName +", src=" + videoJQ.attr("src"));

            // 为下载按钮绑定单击事件下载视频
            downloadJQ.on("click", function (event) {
                // console.log("下载视频:" + $(this).attr("id") + ", href=" +  $(this).attr("href"));
                // 阻止 a 标签默认行为
                event.preventDefault();
                if($(this).attr("href")) {
                    // 下载视频
                    download($(this).attr("href"));
                    // 打开一个新的标签页面: 新标签页获取页面焦点,新标签页面关闭后,焦点重新回到源页面
                    GM_openInTab($(this).attr("href"),{ active: true, setParent :true});

                }
            });
        } else {
            // console.log(videoJQ.attr("id") +" 已存在下载按钮:" + downloadIdAttrName + ", src=" + videoJQ.attr("src"));
        }
    }

    $(function () {
        // 查找视频标签<video>,向视频上边添加【下载】按钮.
        findVideoEle();
    });

})();