BT之家[单独+批量下载+一键复制] 2020年2月13日

BT之家资源直接下载。

// ==UserScript==
// @name         BT之家[单独+批量下载+一键复制]  2020年2月13日
// @namespace    waecy
// @version      1.0
// @description  BT之家资源直接下载。
// @author       waecy
// @match        *://www.btbtt.co/*.htm
// @match        *://www.btbtt.me/*.htm
// @match        *://www.btbtt.net/*.htm
// @match        *://www.btbtt.pw/*.htm
// @match        *://www.btbtt.la/*.htm
// @match        *://www..51btbtt.com/*
// @match        *://www.8btbtt.com/*
// @match        *://www.92btbtt.com/*
// @match        *://www.92btbtt.us/*
// @match        *://www.btbtt.us/*
// @match        *://*.88btbtt.com/*
// @match        *://*.51btbtt.com/*
// @match        *://*.52btbtt.com/*
// @match        *://*.91btbtt.com/*
// @match        *://*.btbtt.us/*
// @match        *://*.mebtbtt.com/*
// @match        *://*.88btbtt.com/*
// @match        *://btbtt12.com/*
// @match        *://btbtt11.com/*
// @match        *://btbtt15.com/*
// @match        *://btbtt16.com/*
// @match        *://btbtt19.com/*
// @match        *://btbtt17.com/*
// @match        *://btbtt20.com/*
// @match        *://btbtt10.com/*
// @match        *://btbtt11.com/*
// @match        *://btbtt16.com/*
// @match        *://btbtt14.com/*
// @match        *://btbtt15.com/*
// @match        *://btbtt12.com/*
// @match        *://btbtt17.com/*
// @match        *://btbtt19.com/*
// @match        *://btbtt20.com/*
// @match        *://btbtt11.com/*
// @match        *://btbtt12.com/*
// @match        *://btbtt14.com/*
// @match        *://btbtt16.com/*
// @match        *://btbtt10.com/*
// @match        *://btbtt18.com/*
// @match        *://btbtt19.com/*
// @match        *://btbtt15.com/*
// @match        *://88btbtt.com/*
// @match        *://btbtt20.com/*
// @match        *://www.btbtt11.comm/*
// @license MIT
// @grant        none
// ==/UserScript==
// 2019年12月30日修改
// 2021年02月18日新增一键复制 按钮
(function() {
    function adddownload(btl) {
        for (var i = 0; i < btl.length; i++) {
            var newbtl = document.createElement("td");
            newbtl.width = "70";
            newbtl.className = "grey";
            newbtl.innerHTML = "直接下载";
            var btl2 = btl[i].getElementsByTagName('td')[1];
            btl[i].insertBefore(newbtl, btl2);
        }
    }

    function replacedownload(zjxz) {
        for (var j = 0; j < zjxz.length; j++) {
            var replaceword = zjxz[j].href.replace(/dialog/g, 'download');
            var newdownload1 = document.createElement("td");
            //newdownload1.className = "grey";
            var newdownload2 = document.createElement("a");
            newdownload2.href = replaceword;
            newdownload2.target = "_blank";
            newdownload2.rel = "nofollow";
            newdownload2.innerHTML = "Download";
            newdownload1.appendChild(newdownload2);
            var download2 = zjxz[j].parentElement.parentElement.getElementsByTagName('td')[1];
            zjxz[j].parentElement.parentElement.insertBefore(newdownload1, download2);
        }
    }

    function realnum(xzcs) {
        for (var k = 0; k < xzcs.length; k++) {
            if (xzcs[k].innerHTML.match(/[0-9]*次/g)) {
                var realnumber = parseInt(xzcs[k].innerHTML.replace(/次/g, '') / 7);
                xzcs[k].innerHTML = realnumber + " 次";
            }
        }
    }
    var xzbt = document.querySelectorAll(".attachlist>.noborder>tbody>tr:nth-of-type(1)");
    adddownload(xzbt);
    var xzlj = document.querySelectorAll(".attachlist>.noborder>tbody>tr>td>a");
    replacedownload(xzlj);
    var xzycswz = document.querySelectorAll(".attachlist>.noborder>tbody>tr>td:nth-of-type(5)");
    realnum(xzycswz);
    var xqycswz = document.querySelectorAll("#body>.border>dl>dd:nth-of-type(3)");
    realnum(xqycswz);
    if ($('.attachlist'))
    // 有BT链接时才添加批量下载按钮
        if ($('.attachlist')) {

        // 添加批量下载
        $('.attachlist').prev().after('' +
          '<button class="downClass" index="' +
          $('.message').index() +
          '" style="' +
            'background-color: #333333; ' +
            'border: none; ' +
            'color: white; ' +
            'padding: 10px; ' +
            'text-align: center; ' +
            'text-decoration: none; ' +
            'display: inline-block; ' +
            'font-size: 16px; ' +
            'margin: 4px 2px; ' +
             'border-radius:10px; ' +
            'cursor: pointer;">' +
            '批量下载' +
          '</button>' +
            '<button class="copyBtn" style="' +
            'background-color: #333333; ' +
            'border: none; ' +
            'color: white; ' +
            'padding: 10px; ' +
            'text-align: center; ' +
            'text-decoration: none; ' +
            'display: inline-block; ' +
            'font-size: 16px; ' +
            'margin: 4px 2px; ' +
            'border-radius:10px; ' +
            'cursor: pointer;">'+
            '一键复制' +
           '</button>'+
           '<button class="downClass2" index="' +
          $('.message').index() +
          '" style="' +
            'background-color: #333333; ' +
            'border: none; ' +
            'color: white; ' +
            'padding: 10px; ' +
            'text-align: center; ' +
            'text-decoration: none; ' +
            'display: inline-block; ' +
            'font-size: 16px; ' +
            'margin: 4px 2px; ' +
             'border-radius:10px; ' +
            'cursor: pointer;">' +
            '一键下载添加torrent后缀' +
           '');


        // 点击批量下载
        $(".downClass").click(function() {
            // 获取tr
            var trList = $(this).parent().parent().find('tr');
            // 保存url
            window.myObj = {
                index: [],
                name: [],
                data: []
            };

              // 判断种子名是否包含后缀
              var addEndStr = '';

            // 循环遍历
            trList.each(function(index, ele) {

                    // 判断点击按钮
                    var ifBtn = $(ele).find('td:eq(1) a');

                    // 获取文件名
                    var selfAEle = $(ele).find('td:eq(0) a');

                    // 判断是否为下载按钮
                    if (ifBtn.text() == 'Download') {

                        // 添加索引
                        window.myObj['index'].push(index);

                        // 添加下载链接
                        window.myObj['data'].push(ifBtn.attr('href'));

                        // 判断文件名是否包含种子后缀或压缩包后缀
                        if (selfAEle.text().substr(selfAEle.text().length - 3) == 'rar') {
                          addEndStr = '';
                        } else if (selfAEle.text().substr(selfAEle.text().length - 3) != 'rar'
                          && selfAEle.text().substr(selfAEle.text().length - 7) != 'torrent'
                          && selfAEle.text().substr(selfAEle.text().length - 4) != 'torr' )  {
                          addEndStr = '.rar';
                        } else if (selfAEle.text().substr(selfAEle.text().length - 7) == 'torrent') {
                          addEndStr = '';
                        } else {
                          addEndStr = '.torrent';
                        }


                        // 添加文件名
                        window.myObj['name'].push(selfAEle.text().replace(/(^\s*)|(\s*$)/g, "") + addEndStr);


                        // 批量打开
                        // window.open($(ele).find('td:eq(1) a').attr('href'))
                    }
                })

             // 保存url
            var toUrl = window.myObj['data'];

            // 保存文件名
            var toUrlName = window.myObj['name'];

            // 循环遍历
            for (var i = 0; i < toUrl.length; i++) {
                // 批量打开
                // window.open(toUrl[i])
                 download(toUrl[i], toUrlName[i]);
            }
        })


    // 封装复制函数
   var  copyFn = function (ele, copyText) {
      // 更改input内容
      $(ele).val(copyText);

      // 全选输入框内容
      $(ele).select();

      // 执行浏览器自带的复制
      document.execCommand("Copy");

      // 清空输入框内容
      $(ele).val('');
    }


        // 点击一键复制
        $(".copyBtn").click(function() {
            // 获取tr
            var trList = $(this).parent().parent().find('.message');

            // 复制文件名
            copyFn('#quick_message', trList.text().replace(/(^\s*)|(\s*$)/g, ""));

            // 循环遍历
           /* trList.each(function(index, ele) {
                    if ($(ele).find('td:eq(1) a').text() == 'Download') {
                        window.myObj['index'].push(index);
                        window.myObj['data'].push($(ele).find('td:eq(1) a').attr('href'));
                        // 批量打开
                        window.open($(ele).find('td:eq(1) a').attr('href'))
                    }
                })
*/
        })

        // 一键下载添加torrent后缀
        $(".downClass2").click(function() {
            // 获取tr
            var trList = $(this).parent().parent().find('tr');
            // 保存url
            window.myObj = {
                index: [],
                name: [],
                data: []
            };

              // 判断种子名是否包含后缀
              var addEndStr = '';

            // 循环遍历
            trList.each(function(index, ele) {

                    // 判断点击按钮
                    var ifBtn = $(ele).find('td:eq(1) a');

                    // 获取文件名
                    var selfAEle = $(ele).find('td:eq(0) a');

                    // 判断是否为下载按钮
                    if (ifBtn.text() == 'Download') {

                        // 添加索引
                        window.myObj['index'].push(index);

                        // 添加下载链接
                        window.myObj['data'].push(ifBtn.attr('href'));

                        // 判断文件名是否包含种子后缀或压缩包后缀
                        if (selfAEle.text().substr(selfAEle.text().length - 3) == 'rar') {
                          addEndStr = '';
                        } else if (selfAEle.text().substr(selfAEle.text().length - 3) != 'rar'
                          && selfAEle.text().substr(selfAEle.text().length - 7) != 'torrent'
                          && selfAEle.text().substr(selfAEle.text().length - 4) != 'torr' )  {
                          addEndStr = '.torrent';
                        } else if (selfAEle.text().substr(selfAEle.text().length - 7) == 'torrent') {
                          addEndStr = '';
                        } else {
                          addEndStr = '.torrent';
                        }


                        // 添加文件名
                        window.myObj['name'].push(selfAEle.text().replace(/(^\s*)|(\s*$)/g, "") + addEndStr);


                        // 批量打开
                        // window.open($(ele).find('td:eq(1) a').attr('href'))
                    }
                })

             // 保存url
            var toUrl = window.myObj['data'];

            // 保存文件名
            var toUrlName = window.myObj['name'];

            // 循环遍历
            for (var i = 0; i < toUrl.length; i++) {
                // 批量打开
                // window.open(toUrl[i])
                 download(toUrl[i], toUrlName[i]);
            }
        })


    }
})();

// 下载文件并修改文件名称
// url:文件地址 filename:想要修改为的名称
function download(url, filename) {
    getBlob(url, function(blob) {
        saveAs(blob, filename);
    });
};

function getBlob(url, cb) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = function() {
        if (xhr.status === 200) {
            cb(xhr.response);
        }
    };
    xhr.send();
}

function saveAs(blob, filename) {
    if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(blob, filename);
    } else {
        var link = document.createElement('a');
        var body = document.querySelector('body');
        link.href = window.URL.createObjectURL(blob);
        link.download = filename;
        // fix Firefox
        link.style.display = 'none';
        body.appendChild(link);
        link.click();
        body.removeChild(link);
        window.URL.revokeObjectURL(link.href);
    };
}