免登录城通网盘直链快速下载

// ==UserScript==
// @name         免登录城通网盘直链快速下载 精简页面
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  全网首发城通网盘免登录直链快速下载插件 有什么问题请在评论里说
// @author       ddpp
// @match        *://*/*
// @icon         https://webapi.ctfile.com/assets/img/favicons/mstile-150x150.png
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @connect      api.bilibili.com
// @license MIT
 
// ==/UserScript==
/* globals file_id */
/* globals code */
(function () {
  "use strict";
 
  //请求获取运营商 以获取最快速率
  GM_xmlhttpRequest({
    method: "get",
    url: "https://api.bilibili.com/x/web-interface/zone",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
    },
 
    onload: function (response) {
      var name = response.responseText;
      var isp = name.match(/"isp":"(\S*)","l/)[1];
      var ispwrite = {
        isp: isp
      };
      GM_setValue("isp", ispwrite);
    },
    onerror: function (response) {
      console.log("请求失败");
    }
  });
 
  function Download(content) {
    var eleLink = document.createElement("a");
    eleLink.style.display = "none";
    eleLink.href = content;
    document.body.appendChild(eleLink);
    eleLink.click();
    document.body.removeChild(eleLink);
  }
  //等待元素加载完毕
  function waitForKeyElements(
    selectorOrFunction,
    callback,
    waitOnce,
    interval,
    maxIntervals
  ) {
    if (typeof waitOnce === "undefined") {
      waitOnce = true;
    }
    if (typeof interval === "undefined") {
      interval = 300;
    }
    if (typeof maxIntervals === "undefined") {
      maxIntervals = -1;
    }
    var targetNodes =
      typeof selectorOrFunction === "function"
        ? selectorOrFunction()
        : document.querySelectorAll(selectorOrFunction);
 
    var targetsFound = targetNodes && targetNodes.length > 0;
    if (targetsFound) {
      targetNodes.forEach(function (targetNode) {
        var attrAlreadyFound = "data-userscript-alreadyFound";
        var alreadyFound = targetNode.getAttribute(attrAlreadyFound) || false;
        if (!alreadyFound) {
          var cancelFound = callback(targetNode);
          if (cancelFound) {
            targetsFound = false;
          } else {
            targetNode.setAttribute(attrAlreadyFound, true);
          }
        }
      });
    }
 
    if (maxIntervals !== 0 && !(targetsFound && waitOnce)) {
      maxIntervals -= 1;
      setTimeout(function () {
        waitForKeyElements(
          selectorOrFunction,
          callback,
          waitOnce,
          interval,
          maxIntervals
        );
      }, interval);
    }
  }
 
  //判断是否为手机页面
  function mobile() {
    //判断数值是否存在
    if (typeof GM_getValue("mobile") === "undefined") {
      var mode = {
        mode: "1"
      };
      GM_setValue("mobile", mode);
      location.reload();
    }
    //一般用不到 防止用户切换界面
    if (GM_getValue("mobile").mode === "0") {
      var error;
      var r = confirm(
        "使用的是手机版网页吗? 如果是请点击确定 手机版如果不能使用请及时更新脚本 确认后大约需要加载2秒 请耐心等待"
      );
      if (r == true) {
        GM_setValue("mobile", mode);
        location.reload();
      } else {
        error =
          "很抱歉 不开启会影响脚本使用 如果判断错误请联系作者恢复 如果是直接进入此网页 请尝试刷新网页";
        document.write(error);
      }
    }
  }
  waitForKeyElements(' [class="alert alert-light mb-0"]', mobile);
  //判断是否为电脑界面
  function pc() {
    //判断数值是否存在
    if (typeof GM_getValue("mobile") === "undefined") {
      var mode = {
        mode: "0"
      };
      GM_setValue("mobile", mode);
      location.reload();
    }
    //一般用不到 防止用户切换界面
    if (GM_getValue("mobile").mode === "1") {
      var error;
      var r = confirm(
        "使用的是电脑网页吗?如果是请点击确定 确认后大约需要加载2秒 请耐心等待"
      );
      if (r == true) {
        GM_setValue("mobile", mode);
        location.reload();
      } else {
        error =
          "很抱歉 不开启会影响脚本使用 如果判断错误请联系作者恢复 如果直接进入此网页 请尝试刷新网页";
        document.write(error);
      }
    }
  }
  waitForKeyElements(' [class="btn btn-warning ml-3"]', pc);
  //当检测为下载界面时执行的代码
  if (window.location.pathname.split("/")[1].indexOf("f") == 0) {
    //判断是否为电脑界面
    if (GM_getValue("mobile").mode === "0") {
      //显示VIP下载
      function vipdown() {
        document.getElementsByClassName("card-deck")[0].style.display = "block";
        document.getElementsByClassName("card-deck")[1].style.display = "none";
      }
      //隐藏购买VIP
      waitForKeyElements(' [class="card-deck"]', vipdown);
      function buyvip() {
        document.getElementsByClassName("row no-gutters")[1].style.display =
          "none";
      }
      waitForKeyElements(' [class="row no-gutters"]', buyvip);
      //隐藏广告
      function webad() {
        document.getElementsByClassName("card bg-light mb-3")[2].style.display =
          "none";
      }
      waitForKeyElements(' [class="card bg-light mb-3"]', webad);
      //对于一些不支持的功能进行隐藏
      function notsupport() {
        document.getElementsByClassName("mb-3")[1].style.display = "none";
      }
      waitForKeyElements(' [class="mb-3"]', notsupport);
      //重写下载按钮
      function dxdown() {
        document.getElementsByClassName(
          "btn btn-outline-secondary fs-1 mt-3"
        )[0].onclick = function dxdown() {
          var downurl =
            "https://apid1.ctfile.workers.dev/电信/?file=" + file_id;
          Download(downurl);
        };
      }
      waitForKeyElements(
        ' [class="btn btn-outline-secondary fs-1 mt-3"]',
        dxdown
      );
      function ltdown() {
        document.getElementsByClassName(
          "btn btn-outline-info fs-1 mt-3"
        )[0].onclick = function ltdown() {
          var downurl =
            "https://apid1.ctfile.workers.dev/联通/?file=" + file_id;
          Download(downurl);
        };
      }
      waitForKeyElements(' [class="btn btn-outline-info fs-1 mt-3"]', ltdown);
      function yddown() {
        document.getElementsByClassName(
          "btn btn-outline-dark fs-1 mt-3"
        )[0].onclick = function yddown() {
          var downurl =
            "https://apid1.ctfile.workers.dev/移动/?file=" + file_id;
          Download(downurl);
        };
      }
      waitForKeyElements(' [class="btn btn-outline-dark fs-1 mt-3"]', yddown);
      //隐藏推广搜索按钮
      function searchad() {
        document.getElementsByClassName("nav-item")[0].style.display = "none";
      }
      waitForKeyElements(' [class="nav-item"]', searchad);
    }
  }
  //判断是否为手机界面
  if (GM_getValue("mobile").mode === "1") {
    //显示VIP下载
    function vipdown() {
      document.getElementsByClassName("card-deck")[0].style.display = "block";
      document.getElementsByClassName("card-deck")[1].style.display = "none";
    }
    waitForKeyElements(' [class="card-deck"]', vipdown);
    //隐藏广告
    function webad() {
      document.getElementById("mobile-500x200").style.display = "none";
    }
    waitForKeyElements(' [id="mobile-500x200"]', webad);
    //重写下载按钮
    function down() {
      document.getElementsByClassName(
        "btn btn-outline-secondary fs-1 mt-3"
      )[0].onclick = function yddown() {
        var downurl =
          "https://apid1.ctfile.workers.dev/" +
          GM_getValue("isp").isp +
          "/?file=" +
          file_id;
        Download(downurl);
      };
    }
    waitForKeyElements(' [class="btn btn-outline-secondary fs-1 mt-3"]', down);
  }
 
  //当检测为目录界面时执行的代码
  if (window.location.pathname.split("/")[1].indexOf("d") == 0) {
    //判断是否为电脑节目
    if (GM_getValue("mobile").mode === "0") {
      //隐藏网站广告
      function webad() {
        document.getElementsByClassName("card bg-light mb-3")[1].style.display =
          "none";
      }
      waitForKeyElements(' [class="card bg-light mb-3"]', webad);
      //对于一些不支持的功能进行隐藏或提示
      function notsupport() {
        document.getElementsByClassName(
          "btn btn-falcon-default mr-2"
        )[2].style.display = "none";
        document.getElementsByClassName(
          "btn btn-falcon-default mr-2"
        )[3].style.display = "none";
        document.getElementsByClassName(
          "btn btn-falcon-default mr-2"
        )[5].style.display = "none";
        document.getElementsByClassName(
          "btn btn-falcon-default mr-2"
        )[4].onclick = function down() {
          alert(
            "很抱歉 此功能暂时无法实现 因为本脚本使用的是cloudflare workers进行解析 访问较慢且较难实现"
          );
        };
      }
      waitForKeyElements(' [id="dashboard-actions"]', notsupport);
      //隐藏推广搜索按钮
      function searchad() {
        document.getElementsByClassName("nav-item")[0].style.display = "none";
      }
      waitForKeyElements(' [class="nav-item"]', searchad);
    }
  }
})();