Downloader

Fur下载器

// ==UserScript==
// @name         Downloader
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @description  Fur下载器
// @author       Rehtt
// @match        *://www.furaffinity.net/*
// @icon         https://rehtt.com/img/rehtt.jpg
// @grant        GM_xmlhttpRequest
// @grant        GM_download
// @note         2020.1.28-V1.0 完成下载furaffinity
// ==/UserScript==

(function () {
    'use strict';
    console.log("脚本By Rehtt")
    switch (location.host.split(".")[1]) {
        case "furaffinity":
            furaffinity();
            break
        default:
            break;
    }

})();

function furaffinity() {
    function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}
    function download(document, ii) {
        let t = document.getElementsByTagName("figcaption")
        let id
        id = t[ii].getElementsByTagName("p")[0].getElementsByTagName("a")[0].href
        GM_xmlhttpRequest({
            method: "GET",
            url: id,
            onload: function (res) {
                let documentt = new DOMParser().parseFromString(res.responseText, 'text/html');
                let url = documentt.getElementsByClassName("button standard")
                for (let i = 0; i < url.length; i++) {
                    if (url[i].innerText == "Download") {
                        let name = url[i].href.split(".")
                        GM_download(url[i].href, name[name.length - 2] + "." + name[name.length - 1])
                        if (ii < t.length - 1) {
                            sleep(500).then(() => {
                                console.log("脚本By Rehtt")
                                download(document, ii + 1)
                            })
                        }
                        break
                    }
                }

            }
        });


    }


//
    let t = location.href.split(".")[2].split("/")[1];
    if (t == "gallery" || t == "scraps" || t == "favorites") {
        let tag1 = document.createElement("button")
        tag1.innerHTML = '下载当前页面'
        tag1.type = 'button'
        tag1.className = 'button'
        tag1.addEventListener('click', function () {
            download(document, 0)
        })
        let tag2 = document.createElement("button")
        tag2.innerHTML = '下载全部'
        tag2.type = 'button'
        tag2.className = 'button'
        let document2 = document
        let next
        tag2.addEventListener('click', function q() {
            download(document2, 0)
            next = document2.getElementsByClassName("p20 aligncenter")[0].getElementsByTagName("div")[3]
            if (next.innerText != "Next") {
                return
            }
            GM_xmlhttpRequest({
                method: "GET",
                url: next.getElementsByTagName("form")[0].action,
                onload: function (res) {
                    document2 = new DOMParser().parseFromString(res.responseText, 'text/html');
                    q()
                }
            });
        })

        let biao = document.getElementsByClassName("button standard toggle_titles")
        biao[0].parentNode.appendChild(tag1)
        biao[0].parentNode.appendChild(tag2)

    }
}