微博视频下载助手

微博视频旁边自动展示下载按钮,点击即可下载(蚩尤后裔)

// ==UserScript==
// @name         微博视频下载助手
// @version      1.1.1
// @description  微博视频旁边自动展示下载按钮,点击即可下载(蚩尤后裔)
// @author       蚩尤后裔
// @homepage     https://greasyfork.org/zh-CN/scripts/458716-%E5%BE%AE%E5%8D%9A%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD%E5%8A%A9%E6%89%8B
// @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
// @grant        GM_log
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @grant        GM_openInTab
// @license      MIT
// @namespace https://greasyfork.org/users/1008816
// ==/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();
    });

})();