Greasy Fork

抖音视频下载插件

修改网页以使其出现一个按钮供用户点击下载抖音、快手视频

目前为 2023-01-01 提交的版本。查看 最新版本

// ==UserScript==
// @name         抖音视频下载插件
// @namespace    https://space.bilibili.com/1552375363
// @version      2.12
// @description  修改网页以使其出现一个按钮供用户点击下载抖音、快手视频
// @author       Xbodw
// @match        https://www.douyin.com/*
// @match        https://*.douyin.com
// @match        http://*
// @match        ftp://*
// @match        *://*/*
// @icon         https://tse3-mm.cn.bing.net/th/id/OIP-C.nncnWjuyFBadY1Nl0PqDDwAAAA?pid=ImgDet&rs=1
// @grant        unsafeWindow
// @license      MIT
// @source       https://greasyfork.org/scripts/457343-%E6%8A%96%E9%9F%B3%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD%E6%8F%92%E4%BB%B6/code/%E6%8A%96%E9%9F%B3%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD%E6%8F%92%E4%BB%B6.user.js
// ==/UserScript==

(window.onload = function() {
    'use strict';

    var ButtonElement2 = null;
    var button;
    var button1;
    var button2;
    var sleep = function(time) {
    var timeOut = new Date().getTime() + parseInt(time, 10);
    while(new Date().getTime() <= timeOut) {}
    };

    function Viewer(TabType,ViewString,HasString) {
      return document.querySelector('' + TabType + '[' + ViewString + '*="' + HasString + '"]').getAttribute(ViewString);
    }
    // 按钮input元素部分
    if(window.location.host == "www.douyin.com") {
     button = document.createElement("input");
     button.setAttribute("type", "button");
     button.setAttribute("value", "下载");
     button.style.width = "40px";
     button.style.height = "30px";
     button.style.align = "center";
     button.style.background = "#000000";
     button.style.color = "white";
     button.style.visibility = 'visible';
     button.style.border="1px solid red";
        //视频解析部分
     button.onclick = function() {
         if(window.location.host == "www.douyin.com") {}
         else {
             alert("网站可能不是抖音!");
             return;
         }
        var link = document.querySelector('source[src*="&aid="]').getAttribute('src');
     var part = document.querySelector('source[src*="&aid="]').parentElement.getAttribute('mediatype');
     if(part == "video") {
      //var link=document.querySelector('source[src*="id="][src*="v3-web"]').getAttribute('src');
      var date = new Date();
      var year = date.getFullYear();
      var month = date.getMonth() + 1;
      var day = date.getDate();
      var hour = date.getHours();
      var minute = date.getMinutes();
      var second = date.getSeconds();
      var filename="视频_" + year + month + day + hour + minute + second + ".mp4";
      console.log("视频正在合成,完成后将自动保存.");fetch(link).then(res => res.blob()).then(blob => {
      const a = document.createElement('a');
      document.body.appendChild(a)
      a.style.display = 'none'
      const url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = filename;
      a.click();
      document.body.removeChild(a)
      window.URL.revokeObjectURL(url);
      });
     } else {
         alert("获取视频下载链接失败,可能是接口在维护或脚本版本过低!");
     }
    }
        //抖音下载按钮判断部分,请勿删除
        if(window.location.href == "https://www.douyin.com/") {
         //var getdiv = document.querySelector('div[class="iViO9oMI"]');
         //getdiv.remove();
         //getdiv = document.querySelector('div[class="HQwsRJFy"]');
         //getdiv.appendChild(button);
         var getdiv9 = document.querySelector('div[class="l9GtwryL"]');
         var getdiv10 = getdiv9.parentNode;
         var getdiv11 = getdiv10.parentNode;
         getdiv10.remove();
         getdiv11.appendChild(button);
        }
        if(window.location.href.indexOf("https://www.douyin.com/video/") !== -1) {
         //var dylogo = document.querySelector('a[href="//www.douyin.com/"]');
         //dylogo.remove();
         //var getdiv7 = document.querySelector('div[class="iViO9oMI"]');
         //getdiv7.remove();
         //var getdiv8 = document.querySelector('div[class="HQwsRJFy"]');
         //getdiv8.appendChild(button);
         var getdiv7 = document.querySelector('div[class="l9GtwryL"]');
         var getdiv8 = getdiv7.parentNode;
         var getdiv2 = getdiv8.parentNode;
         getdiv8.remove();
         getdiv2.appendChild(button);
        }
        if(window.location.href.indexOf("https://www.douyin.com/search/") !== -1) {
         //var dylogo = document.querySelector('a[href="//www.douyin.com/"]');
         //dylogo.remove();
         //var getdiv1 = document.querySelector('div[class="iViO9oMI"]');
         //getdiv1.remove();
         //var getdiv6 = document.querySelector('div[class="HQwsRJFy Bo1o4KGi"]');
         //getdiv6.appendChild(button);
         var getdiv1 = document.querySelector('div[class="l9GtwryL"]');
         var getdiv6 = getdiv1.parentNode;
         var getdiv5 = getdiv6.parentNode;
         getdiv6.remove();
         getdiv5.appendChild(button);
        }
        if(window.location.href.indexOf("modal_id=") !== -1) {
         var getdiv3 = document.querySelector('div[class="btn"]');
         var getdiv4 = getdiv3.parentNode;
         getdiv3.remove();
         getdiv4.appendChild(button);
        }
    }
    if(window.location.host == "www.kuaishou.com") {
     button1 = document.createElement("input");
     button1.setAttribute("type", "button");
     button1.setAttribute("value", "下载");
     button1.style.width = "40px";
     button1.style.height = "30px";
     button1.style.align = "center";
     button1.style.background = "#000000";
     button1.style.color = "white";
     button1.style.visibility = 'visible';
     button1.style.border="1px solid red";
        //视频解析部分
     button1.onclick = function() {
         if(window.location.host == "www.kuaishou.com") {}
         else {
             alert("网站可能不是快手!");
             return;
         }
        var link = document.querySelector('video[src*="ss=vp"]').getAttribute('src');
     var part = document.querySelector('video[src*="ss=vp"]').getAttribute('class');
     if(part == "player-video") {
      //var link=document.querySelector('source[src*="id="][src*="v3-web"]').getAttribute('src');
      var date = new Date();
      var year = date.getFullYear();
      var month = date.getMonth() + 1;
      var day = date.getDate();
      var hour = date.getHours();
      var minute = date.getMinutes();
      var second = date.getSeconds();
      var filename="视频_" + year + month + day + hour + minute + second + ".mp4";
      console.log("视频正在合成,完成后将自动保存.");fetch(link).then(res => res.blob()).then(blob => {
      const a = document.createElement('a');
      document.body.appendChild(a)
      a.style.display = 'none'
      const url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = filename;
      a.click();
      document.body.removeChild(a)
      window.URL.revokeObjectURL(url);
      });
     } else {
         alert("获取视频下载链接失败,可能是接口在维护或脚本版本过低!");
     }
    }
    if(window.location.href == "https://www.kuaishou.com/new-reco"||window.location.href == "https://www.kuaishou.com/") {
    var AppedButton = document.querySelector('a[href="/ott"]');
    var ButtonElement = document.querySelector('a[href="/ott"]').parentNode;
        ButtonElement.appendChild(button1);
    }
    if(window.location.href.indexOf("https://www.kuaishou.com/search/video?searchKey=") !== -1) {
    var AppedButton1 = document.querySelector('a[href="/ott"]');
    var ButtonElement1 = document.querySelector('a[href="/ott"]').parentNode;
        ButtonElement1.appendChild(button1);
    }
    if(window.location.href.indexOf("https://www.kuaishou.com/short-video/") !== -1||window.location.href.indexOf("https://www.kuaishou.com/profile/") !== -1) {
    ButtonElement2 = document.querySelector('span[class="item-text"]');
    var IsHasButton = document.querySelector('input[type="button"],[value="下载"]');
        ButtonElement2.appendChild(button1);
    }
    }

    if(window.location.host == "www.pearvideo.com") {
     button2 = document.createElement("input");
     button2.setAttribute("type", "button");
     button2.setAttribute("value", "下载");
     button2.style.width = "40px";
     button2.style.height = "30px";
     button2.style.align = "center";
     button2.style.background = "#000000";
     button2.style.color = "white";
     button2.style.visibility = 'visible';
     button2.style.border="1px solid red";
        //视频解析部分
     button2.onclick = function() {
         if(window.location.host == "www.pearvideo.com") {}
         else {
             alert("网站可能不是梨视频!");
             return;
         }
        var link = document.querySelector('video[src*=".mp4"]').getAttribute('src');
     var part = document.querySelector('video[src*=".mp4"]').getAttribute('autoplay');
     if(part == "autoplay") {
      //var link=document.querySelector('source[src*="id="][src*="v3-web"]').getAttribute('src');
      var date = new Date();
      var year = date.getFullYear();
      var month = date.getMonth() + 1;
      var day = date.getDate();
      var hour = date.getHours();
      var minute = date.getMinutes();
      var second = date.getSeconds();
      var filename="视频_" + year + month + day + hour + minute + second + ".mp4";
      console.log("视频正在合成,完成后将自动保存.");fetch(link).then(res => res.blob()).then(blob => {
      const a = document.createElement('a');
      document.body.appendChild(a)
      a.style.display = 'none'
      const url = window.URL.createObjectURL(blob);
      a.href = url;
      a.download = filename;
      a.click();
      document.body.removeChild(a)
      window.URL.revokeObjectURL(url);
      });
     } else {
         alert("获取视频下载链接失败,可能是接口在维护或脚本版本过低!");
     }
    }
        var lispButtons = document.querySelector('a[id="actApp"]');
         var Adder = lispButtons.parentNode;
         lispButtons.remove();
         Adder.appendChild(button2);
    }
})();