自动获取磁链接并自动离线下载

اعتبارا من 01-02-2017. شاهد أحدث إصدار.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

"use strict";

// ==UserScript==
// @name        挊
// @namespace   撸
// @description 自动获取磁链接并自动离线下载

// @include     http*://avmo.pw/*
// @include     http*://avso.pw/*
// @include     http*://avxo.pw/*
// @include     http*://www.av28.com/*/movie/*

// @include     http*://*javlibrary.com/*
// @include     http*://*javlib.com/*
// @include     http*://*javl10.com/*
// @include     http*://*jav11b.com/*

// @include     http*://www.libredmm.com/products/*

// @include     http*://www.javbus.com/*
// @include     http*://www.javbus.me/*
// @include     http*://www.javbus2.com/*
// @include     http*://www.javbus3.com/*
// @include     http*://www.javbus5.com/*

// @include     http*://www.icpmp.com/fanhao/*.html
// @include     http*://blog.jav4you.com/*
// @include     http*://*1pondo.tv/*/index.htm

// @include     http*://pan.baidu.com/disk/home*
// @include     http*://115.com/?tab=offline&mode=wangpan
// @include     http*://www.furk.net/users/files/add

// @version     1.43
// @run-at      document-end
// @grant       GM_xmlhttpRequest
// @grant       GM_setClipboard
// @grant       GM_setValue
// @grant       GM_getValue
// @grant       GM_addStyle
// @grant       GM_registerMenuCommand
// ==/UserScript==

var main = {
  //av信息查询 类
  jav: {
    type: 0,
    re: /(avmo|avso|avxo|av28).*movie.*/,
    insert_where: "#movie-share",
    vid: function vid() {
      return document.querySelector(".header").nextElementSibling.innerHTML;
    }
  },
  javlibrary: {
    type: 0,
    re: /(javlibrary|javlib|javl10|jav11b).*\?v=.*/,
    insert_where: "#video_favorite_edit",
    vid: function vid() {
      return document.querySelector("#video_id").getElementsByClassName("text")[0].innerHTML;
    }
  },
  javbus: {
    type: 0,
    re: /javbus/,
    insert_where: "#star-div",
    vid: function vid() {
      return document.querySelector(".header").nextElementSibling.textContent;
    }
  },
  fanhaoku: {
    type: 0,
    re: /icpmp/,
    insert_where: ".mod_film",
    vid: function vid() {
      return document.querySelector(".title_inner").title;
    }
  },
  libredmm: {
    type: 0,
    re: /libredmm/,
    insert_where: ".container",
    vid: function vid() {
      return location.href.match(/products\/(.*)/)[1];
    }
  },
  blogjav4you: {
    type: 0,
    re: /blog\.jav4you\.com/,
    insert_where: ".posttext",
    vid: function vid() {
      return document.querySelector(".posttitle a").textContent.match(/\[(.*)\]/)[1];
    }
  },
  pondo1: {
    type: 0,
    re: /1pondo\.tv.*\/index.htm/,
    insert_where: ".hdg3",
    vid: function vid() {
      return location.pathname.split("/")[3];
    }
  },
  dmm: {
    type: 0,
    re: /dmm\.co\.jp/,
    insert_where: ".lh4",
    vid: function vid() {
      var result = location.href.replace(/.*cid=/, "").replace(/\/\??.*/, "").match(/[^h_0-9].*/);
      return result[0] ? result[0].replace("00", "") : "";
    }
  },

  //网盘下载 类
  //这些 $ 是真正的 jquery
  baidu: {
    type: 1,
    re: /pan\.baidu\.com/,
    fill_form: function fill_form(magnet) {
      document.querySelector(".g-button[data-button-id=b13]").click();
      setTimeout(function () {
        document.querySelector("#_disk_id_2").click();
        setTimeout(function () {
          document.querySelector("#share-offline-link").value = magnet;
          document.querySelector(".g-button[data-button-id=b65]").click();
        }, 500);
      }, 1500);
    }
  },
  115: {
    type: 1,
    re: /115\.com/,
    fill_form: function fill_form(link) {
      var rsc = setInterval(function () {
        if (document.readyState == "complete") {
          clearInterval(rsc);
          setTimeout(function () {
            Core["OFFL5Plug"].OpenLink();
            setTimeout(function () {
              $("#js_offline_new_add").val(link);
            }, 300);
          }, 1000);
        }
      }, 400);
    }
  },
  letv: {
    type: 1,
    re: /cloud\.letv\.com/,
    fill_form: function fill_form(link) {
      setTimeout(function () {
        $("#offline-btn").click();
        setTimeout(function () {
          $("#offline_clear_complete").prev().click();
          setTimeout(function () {
            $("#offline-add-link").val(link);
          }, 500);
        }, 1000);
      }, 2000);
    }
  },
  furk: {
    type: 1,
    re: /www\.furk\.net/,
    fill_form: function fill_form(link) {
      setTimeout(function () {
        $("#url").val(link.replace("magnet:?xt=urn:btih:", ""));
      }, 1500);
    }
  },
  360: {
    type: 1,
    re: /yunpan\.360\.cn\/my/,
    fill_form: function fill_form(link) {
      yunpan.cmdCenter.showOfflineDia();
      setTimeout(function () {
        $(".offdl-btn-create").click();
        setTimeout(function () {
          $("#offdlUrl").val(link);
        }, 500);
      }, 1000);
    }
  },
  uc: {
    type: 1,
    re: /disk\.yun\.uc\.cn\//,
    fill_form: function fill_form(link) {
      setTimeout(function () {
        $("#newuclxbtn_index").click();
        setTimeout(function () {
          $("#uclxurl").val(link);
        }, 1000);
      }, 1200);
    }
  }

};

var offline_sites = {
  baidu: {
    url: "http://pan.baidu.com/disk/home",
    name: "百度云",
    enable: true
  },
  115: {
    name: "115离线",
    url: "http://115.com/?tab=offline&mode=wangpan",
    enable: true
  },
  letv: {
    name: "乐视云",
    url: "http://cloud.letv.com/webdisk/home/index",
    enable: false
  },
  360: {
    name: "360云",
    url: "http://yunpan.360.cn/my/",
    enable: false
  },
  uc: {
    name: "UC离线",
    url: "http://disk.yun.uc.cn/",
    enable: false
  },
  furk: {
    name: "Furk",
    url: "https://www.furk.net/users/files/add",
    enable: true
  }
};
var common = {
  add_style: function add_style() {
    GM_addStyle(["#nong-table{border-collapse: initial !important;background-color: white !important;text-align: center !important;margin:10px auto;color:#666 !important;font-size:13px;text-align:center !important;border: 1px solid #cfcfcf !important;border-radius: 10px !important;}", "#nong-table a {margin-right: 5px !important;color:blue}", "#nong-table a:hover {color:#d20f00 !important;}", "#nong-table th,#nong-table td{text-align: inherit !important;height:30px;padding:0 1em 0 !important;}", ".nong-row{text-align: inherit !important;height:30px;padding:0 1em 0 !important;border: 1px solid #EFEFEF !important;}", ".nong-row:hover{background-color: #dae8ff !important;}", ".nong-offline-download{color: rgb(0, 180, 30) !important;}", ".nong-offline-download:hover{color:red !important;}"].join(""));
  },
  handle_copy_event: function handle_copy_event(event) {
    event.target.innerHTML = "成功";
    GM_setClipboard(event.target.href);
    setTimeout(function () {
      event.target.innerHTML = "复制";
    }, 1000);
    event.preventDefault(); //阻止跳转
  },
  handle_dl_event: function handle_dl_event(event) {
    var mag = event.target.parentElement.parentElement.parentElement.getAttribute("mag");
    console.info("磁链接", mag);
    GM_setValue("magnet", mag);
  },

  reg_event: function reg_event() {
    var selector_event_map = [{
      selector: ".nong-copy",
      type: "click",
      fn: this.handle_copy_event
    }, {
      selector: ".nong-offline-download",
      type: "click",
      fn: this.handle_dl_event
    }];
    var _iteratorNormalCompletion = true;
    var _didIteratorError = false;
    var _iteratorError = undefined;

    try {
      for (var _iterator = selector_event_map[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
        var obj = _step.value;
        var _iteratorNormalCompletion2 = true;
        var _didIteratorError2 = false;
        var _iteratorError2 = undefined;

        try {
          for (var _iterator2 = document.querySelectorAll(obj.selector)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
            var elem = _step2.value;

            //console.log(elem, obj.type, obj.fn);
            elem.addEventListener(obj.type, obj.fn);
          }
        } catch (err) {
          _didIteratorError2 = true;
          _iteratorError2 = err;
        } finally {
          try {
            if (!_iteratorNormalCompletion2 && _iterator2.return) {
              _iterator2.return();
            }
          } finally {
            if (_didIteratorError2) {
              throw _iteratorError2;
            }
          }
        }
      }
    } catch (err) {
      _didIteratorError = true;
      _iteratorError = err;
    } finally {
      try {
        if (!_iteratorNormalCompletion && _iterator.return) {
          _iterator.return();
        }
      } finally {
        if (_didIteratorError) {
          throw _iteratorError;
        }
      }
    }
  },
  parsetext: function parsetext(text) {
    var doc = null;
    try {
      doc = document.implementation.createHTMLDocument("");
      doc.documentElement.innerHTML = text;
      return doc;
    } catch (e) {
      alert("parse error");
    }
  }
};
var magnet_table = {
  template: {
    create_head: function create_head(src) {
      var a = document.createElement("tr");
      a.className = "nong-row";
      a.id = "nong-head";
      var head_str = ["大小", "操作", "离线下载"];
      var th_list = [document.createElement("th"), document.createElement("th"), document.createElement("th"), document.createElement("th")];

      var select_box = document.createElement("select");
      var option_str = my_search.search_name_string;
      //console.log("get", GM_getValue("search_index"));
      var index = GM_getValue("search_index", 0);
      var op_value = 0;
      var _iteratorNormalCompletion3 = true;
      var _didIteratorError3 = false;
      var _iteratorError3 = undefined;

      try {
        for (var _iterator3 = option_str[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
          var str = _step3.value;

          var op = document.createElement("option");
          op.value = op_value;
          op.textContent = str;
          if (index == op_value) {
            op.setAttribute("selected", "selected");
          }
          op_value++;
          select_box.appendChild(op);
        }
      } catch (err) {
        _didIteratorError3 = true;
        _iteratorError3 = err;
      } finally {
        try {
          if (!_iteratorNormalCompletion3 && _iterator3.return) {
            _iterator3.return();
          }
        } finally {
          if (_didIteratorError3) {
            throw _iteratorError3;
          }
        }
      }

      select_box.addEventListener("change", function (e) {
        GM_setValue("search_index", this.value);
        var table = document.querySelector("#nong-table");
        table.parentElement.removeChild(table);
        run();
      });
      th_list[0].appendChild(select_box);

      th_list[1].appendChild(document.createElement("a"));
      th_list[1].lastChild.setAttribute("href", src);
      th_list[1].lastChild.setAttribute("target", "_blank");
      th_list[1].lastChild.textContent = head_str[0];

      th_list[2].appendChild(document.createElement("a"));
      th_list[2].lastChild.textContent = head_str[1];

      th_list[3].appendChild(document.createElement("a"));
      th_list[3].lastChild.textContent = head_str[2];

      var _iteratorNormalCompletion4 = true;
      var _didIteratorError4 = false;
      var _iteratorError4 = undefined;

      try {
        for (var _iterator4 = th_list[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
          var th = _step4.value;

          a.appendChild(th);
        }
      } catch (err) {
        _didIteratorError4 = true;
        _iteratorError4 = err;
      } finally {
        try {
          if (!_iteratorNormalCompletion4 && _iterator4.return) {
            _iterator4.return();
          }
        } finally {
          if (_didIteratorError4) {
            throw _iteratorError4;
          }
        }
      }

      return a;
    },
    create_row: function create_row(data) {
      var tr = document.createElement("tr");
      tr.className = "nong-row";
      tr.setAttribute("mag", data.mag);
      var td = document.createElement("td");
      var _arr = [this.create_info(data.title, data.mag), this.create_size(data.size, data.src), this.create_operation(data.mag), this.create_offline()];
      for (var _i = 0; _i < _arr.length; _i++) {
        var elem = _arr[_i];
        var c = td.cloneNode(true);
        c.appendChild(elem);
        tr.appendChild(c);
      }
      return tr;
    },
    create_row_for_sukebei: function create_row_for_sukebei(data) {
      var tr = document.createElement("tr");
      tr.className = "nong-row";
      tr.setAttribute("mag", data.mag);
      var td = document.createElement("td");
      var append_elems = [function (title, src, self) {
        return self.create_info(title, src);
      }(data.title, data.src, this), function (size, src, self) {
        return self.create_size(size, src);
      }(data.size, data.src, this), function (torrent_url, self) {
        var operate = self.create_operation(torrent_url);
        operate.firstChild.textContent = "种子";
        operate.firstChild.setAttribute("class", "nong-copy-sukebei");
        operate.firstChild.setAttribute("target", "_blank");
        return operate;
      }(data.torrent_url, this), function (self) {
        var div = document.createElement("div");
        div.textContent = "暂不支持离线下载";
        return div;
      }(this)];
      var _iteratorNormalCompletion5 = true;
      var _didIteratorError5 = false;
      var _iteratorError5 = undefined;

      try {
        for (var _iterator5 = append_elems[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
          var elem = _step5.value;

          var c = td.cloneNode(true);
          c.appendChild(elem);
          tr.appendChild(c);
        }
      } catch (err) {
        _didIteratorError5 = true;
        _iteratorError5 = err;
      } finally {
        try {
          if (!_iteratorNormalCompletion5 && _iterator5.return) {
            _iterator5.return();
          }
        } finally {
          if (_didIteratorError5) {
            throw _iteratorError5;
          }
        }
      }

      return tr;
    },
    create_info: function create_info(title, mag) {
      var a = this.info.cloneNode(true);
      a.firstChild.textContent = title.length < max_title_length ? title : title.substr(0, max_title_length) + "...";
      a.firstChild.href = mag;
      a.title = title;
      return a;
    },
    create_size: function create_size(size, src) {
      var a = this.size.cloneNode(true);
      a.textContent = size;
      a.href = src;
      return a;
    },
    create_operation: function create_operation(mag) {
      var a = this.operation.cloneNode(true);
      a.firstChild.href = mag;
      return a;
    },
    create_offline: function create_offline() {
      var a = this.offline.cloneNode(true);
      a.className = "nong-offline";
      return a;
    },

    info: function () {
      var a = document.createElement("div");
      var b = document.createElement("a");
      b.textContent = "name";
      b.href = "src";
      b.target = "_blank";
      a.appendChild(b);
      return a;
    }(),
    size: function () {
      var a = document.createElement("a");
      a.textContent = "size";
      return a;
    }(),
    operation: function () {
      var a = document.createElement("div");
      var copy = document.createElement("a");
      copy.className = "nong-copy";
      copy.textContent = "复制";
      a.appendChild(copy);
      return a;
    }(),
    offline: function () {
      var a = document.createElement("div");
      var b = document.createElement("a");
      b.className = "nong-offline-download";
      b.target = "_blank";
      for (var k in offline_sites) {
        if (offline_sites[k].enable) {
          var c = b.cloneNode(true);
          c.href = offline_sites[k].url;
          c.textContent = offline_sites[k].name;
          a.appendChild(c);
        }
      }
      return a;
    }()
  },

  generate: function generate(src, data) {
    var tab = document.createElement("table");
    tab.id = "nong-table";
    tab.appendChild(this.template.create_head(src));
    //console.log(src);
    //console.log(data);
    if (src.match("sukebei.nyaa.se")) {
      var _iteratorNormalCompletion6 = true;
      var _didIteratorError6 = false;
      var _iteratorError6 = undefined;

      try {
        for (var _iterator6 = data[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
          var d = _step6.value;

          tab.appendChild(this.template.create_row_for_sukebei(d));
        }
      } catch (err) {
        _didIteratorError6 = true;
        _iteratorError6 = err;
      } finally {
        try {
          if (!_iteratorNormalCompletion6 && _iterator6.return) {
            _iterator6.return();
          }
        } finally {
          if (_didIteratorError6) {
            throw _iteratorError6;
          }
        }
      }
    } else {
      var _iteratorNormalCompletion7 = true;
      var _didIteratorError7 = false;
      var _iteratorError7 = undefined;

      try {
        for (var _iterator7 = data[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
          var _d = _step7.value;

          tab.appendChild(this.template.create_row(_d));
        }
      } catch (err) {
        _didIteratorError7 = true;
        _iteratorError7 = err;
      } finally {
        try {
          if (!_iteratorNormalCompletion7 && _iterator7.return) {
            _iterator7.return();
          }
        } finally {
          if (_didIteratorError7) {
            throw _iteratorError7;
          }
        }
      }
    }
    return tab;
  }

};
var my_search = {
  current: function current(kw, cb) {
    var search = my_search[GM_getValue("search_index", 0)];
    try {
      return search(kw, cb);
    } catch (e) {
      this.search_error();
    }
  },
  search_error: function search_error(r) {
    alert("搜索出现错误,请检查网络");
  },
  search_name_string: ["btso", "btdb", "sukebei.nyaa", "btkitty"],
  0: function _(kw, cb) {
    GM_xmlhttpRequest({
      method: "GET",
      url: "https://btso.pw/search/" + kw,
      onload: function onload(result) {
        var doc = common.parsetext(result.responseText);
        var data = [];
        var t = doc.getElementsByClassName("data-list")[0];
        if (t) {
          var _iteratorNormalCompletion8 = true;
          var _didIteratorError8 = false;
          var _iteratorError8 = undefined;

          try {
            for (var _iterator8 = t.getElementsByTagName("a")[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
              var elem = _step8.value;

              if (!elem.className.match("btn")) {
                data.push({
                  "title": elem.title,
                  "mag": "magnet:?xt=urn:btih:" + elem.outerHTML.replace(/.*hash\//, "").replace(/" .*\n.*\n.*\n.*/, ""),
                  "size": elem.nextElementSibling.textContent,
                  "src": elem.href
                });
              }
            }
          } catch (err) {
            _didIteratorError8 = true;
            _iteratorError8 = err;
          } finally {
            try {
              if (!_iteratorNormalCompletion8 && _iterator8.return) {
                _iterator8.return();
              }
            } finally {
              if (_didIteratorError8) {
                throw _iteratorError8;
              }
            }
          }
        } else {
          data.push({
            "title": "没有找到磁链接",
            "mag": "",
            "size": "0",
            "src": result.finalUrl
          });
        }
        cb(result.finalUrl, data);
      },
      onerror: function onerror(e) {
        console.error(e);
        throw "search error";
      }
    });
  },
  1: function _(kw, cb) {
    GM_xmlhttpRequest({
      method: "GET",
      url: "https://btdb.in/q/" + kw + "/",
      onload: function onload(result) {
        var doc = common.parsetext(result.responseText);
        var data = [];
        var t = doc.getElementsByClassName("item-title");
        if (t) {
          var _iteratorNormalCompletion9 = true;
          var _didIteratorError9 = false;
          var _iteratorError9 = undefined;

          try {
            for (var _iterator9 = t[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
              var elem = _step9.value;

              data.push({
                "title": elem.firstChild.title,
                "mag": elem.nextElementSibling.firstElementChild.href,
                "size": elem.nextElementSibling.children[1].textContent,
                "src": "https://btdb.in" + elem.firstChild.getAttribute("href")
              });
            }
          } catch (err) {
            _didIteratorError9 = true;
            _iteratorError9 = err;
          } finally {
            try {
              if (!_iteratorNormalCompletion9 && _iterator9.return) {
                _iterator9.return();
              }
            } finally {
              if (_didIteratorError9) {
                throw _iteratorError9;
              }
            }
          }
        } else {
          data.push({
            "title": "没有找到磁链接",
            "mag": "",
            "size": "0",
            "src": result.finalUrl
          });
        }

        cb(result.finalUrl, data);
      },
      onerror: function onerror(e) {
        console.error(e);
        throw "search error";
      }
    });
  },
  2: function _(kw, cb) {
    GM_xmlhttpRequest({
      method: "GET",
      url: "https://sukebei.nyaa.se/?page=search&cats=0_0&filter=0&term=" + kw,
      onload: function onload(result) {
        var doc = common.parsetext(result.responseText);
        var data = [];
        var t = doc.getElementsByClassName("tlistrow");
        if (t) {
          var _iteratorNormalCompletion10 = true;
          var _didIteratorError10 = false;
          var _iteratorError10 = undefined;

          try {
            for (var _iterator10 = t[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
              var elem = _step10.value;

              data.push({
                "title": elem.querySelector(".tlistname a").textContent,
                "mag": "",
                "torrent_url": "https:" + elem.querySelector(".tlistdownload a").getAttribute("href"),
                "size": elem.querySelector(".tlistsize").textContent,
                "src": "https:" + elem.querySelector(".tlistname a").getAttribute("href")
              });
            }
          } catch (err) {
            _didIteratorError10 = true;
            _iteratorError10 = err;
          } finally {
            try {
              if (!_iteratorNormalCompletion10 && _iterator10.return) {
                _iterator10.return();
              }
            } finally {
              if (_didIteratorError10) {
                throw _iteratorError10;
              }
            }
          }
        } else {
          data.push({
            "title": "没有找到磁链接",
            "mag": "",
            "torrent_url": "",
            "size": "0",
            "src": result.finalUrl
          });
        }

        cb(result.finalUrl, data);
      },
      onerror: function onerror(e) {
        console.error(e);
        throw "search error";
      }
    });
  },
  3: function _(kw, cb) {
    GM_xmlhttpRequest({
      method: "POST",
      url: "http://btkitty.bid/",
      data: "keyword=" + kw,
      headers: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      onload: function onload(result) {
        var doc = common.parsetext(result.responseText);
        var data = [];
        var t = doc.getElementsByClassName("list-con");
        if (t) {
          var _iteratorNormalCompletion11 = true;
          var _didIteratorError11 = false;
          var _iteratorError11 = undefined;

          try {
            for (var _iterator11 = t[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
              var elem = _step11.value;

              data.push({
                "title": elem.querySelector("dt a").textContent,
                "mag": elem.querySelector("dd a").href,
                "size": elem.querySelector(".option span:nth-child(3) b").textContent,
                "src": elem.querySelector("dt a").href
              });
            }
          } catch (err) {
            _didIteratorError11 = true;
            _iteratorError11 = err;
          } finally {
            try {
              if (!_iteratorNormalCompletion11 && _iterator11.return) {
                _iterator11.return();
              }
            } finally {
              if (_didIteratorError11) {
                throw _iteratorError11;
              }
            }
          }
        } else {
          data.push({
            "title": "没有找到磁链接",
            "mag": "",
            "size": "0",
            "src": result.finalUrl
          });
        }
        cb(result.finalUrl, data);
      },
      onerror: function onerror(e) {
        console.error(e);
        throw "search error";
      }
    });
  }

};

var display_table = function display_table(vid, insert_where) {
  common.add_style();
  my_search.current(vid, function (data, src) {

    var tab = magnet_table.generate(data, src);
    if (typeof insert_where === "string") {
      var elem = document.querySelector(insert_where);
      //console.log("display_table", tab, elem);
      if (elem) {
        elem.parentElement.insertBefore(tab, elem);
      }
    } else if (typeof insert_where === "function") {
      insert_where(tab);
    } else {
      console.error("插入表格错误");
    }

    common.reg_event();
  });
};

var vid_mode = function vid_mode(v) {
  var vid = "";
  try {
    vid = v.vid();
  } catch (error) {
    vid = "";
    console.error("没有找到番号", v.vid.toString());
  }
  if (vid) {
    console.info("番号:", vid);
    display_table(vid, v.insert_where);
  }
};

var dl_mode = function dl_mode(v) {

  var mag = GM_getValue("magnet", "");
  //console.info(1, "开始离线下载", mag);
  if (mag) {
    var script = document.createElement("script");
    script.setAttribute("type", "text/javascript");
    script.innerHTML = "(" + v.fill_form.toString() + ")(\"" + mag + "\")";
    document.body.appendChild(script);
    //console.info(info);
  }
  GM_getValue("magnet", "");
};

var run = function run() {
  max_title_length = GM_getValue("max_title_length", 40);
  var main_keys = Object.keys(main);
  for (var i = 0; i < main_keys.length; i++) {
    var v = main[main_keys[i]];

    if (v.re && v.re.test(location.href)) {
      if (v.type === 0) {

        //----

        //for javlibrary
        if (main_keys[i] === "javlibrary") {
          if (document.querySelector("#adultwarningprompt")) {
            document.querySelectorAll("#adultwarningprompt input")[0].click();
          }
        }
        //----

        vid_mode(v);
      } else if (v.type == 1) {
        dl_mode(v);
      }
      break;
    }
  }
};
var max_title_length = GM_getValue("max_title_length", 40);
var set_max_title_length = function set_max_title_length() {
  var len = prompt("请输入你想要的标题长度", GM_getValue("max_title_length", 40));
  if (len !== null && len !== "") {
    GM_setValue("max_title_length", len);
    var table = document.querySelector("#nong-table");
    table.parentElement.removeChild(table);
    run();
  }
};

GM_registerMenuCommand("挊-标题长度", set_max_title_length);
run();