寂月download

寂月神社图片预览下使用的是复用页面,分辨率为300x300,本脚本为自动访问分辨率高的地址并下载图片。

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.

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

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

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

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

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

// ==UserScript==
// @name         寂月download
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  寂月神社图片预览下使用的是复用页面,分辨率为300x300,本脚本为自动访问分辨率高的地址并下载图片。
// @description  v0.1版本进入页面后点击“获取”按钮,提示获取完成后点击“下载”按钮;目前仅能同时下载58张以下的图片。
// @description  v0.2版本进入页面后点击“获取”按钮,提示获取完成后点击“下载”按钮;目前由于服务器访问数量限制,超过59页将会以一页/s的速度访问(会消耗大量浏览器资源)。
// @description  v0.3版本去掉下载按钮,获取链接后自动下载;针对图片过多会某些图片下载失败新增校验按钮,在浏览器无反应后点击校验来查看是否失败(有失败则重新点击获取按钮下载,删掉重复图片即可)。
// @description  本脚本不可用于商业行为,仅限交流自用!
// @author       香香不吃饭
// @match        https://www.jiyue.pro/*
// @require      http://code.jquery.com/jquery-1.11.0.min.js
// @require      https://cdn.bootcss.com/FileSaver.js/1.3.8/FileSaver.min.js
// @grant        GM_info
// @grant        GM_registerMenuCommand
// @grant        GM_xmlhttpRequest
// @grant        GM_download
// @grant        GM_log
// ==/UserScript==

(function() {
    'use strict';

    //创建隐藏a标签
    //var elea = document.createElement("a");
    //elea.setAttribute("id", "a");
    //elea.textContent="值";
    //elea.setAttribute("href", "www.baidu.com");


    //创建一个img标签
    //var eleimg = document.createElement("img");
    //eleimg.setAttribute("id", "img");
    // eleimg.textContent="值";
    //eleimg.setAttribute("class", "img-fluid lazyloaded");

    //创建数组来存储每张图片对应的src
    var imgUrl = [];

    //创建下载超时回调数组
    var timeOutArr = [];

    //创建下载失败回调数组
    var onErrorArr = [];

    var button = document.createElement("button"); //创建一个获取图片url按钮
    button.setAttribute("id", "btn");
    button.setAttribute("type", "button");
    button.textContent="获取";
    button.style.background = "#b46300";
    button.style.color = "white";
    button.style.cssText="padding:4px 0;position: absolute;top:-1px;right:45px;width:40px;height:35px";

    var button2 = document.createElement("button"); //创建一个校验图片按钮
    button2.setAttribute("id", "btn2");
    button2.setAttribute("type", "button");
    button2.textContent="校验";
    button2.style.background = "#b46300";
    button2.style.color = "white";
    button2.style.cssText="padding:4px 0;position: absolute;top:-1px;right:0px;width:40px;height:35px";

    var testdiv = document.getElementById("navbarNav");
    testdiv.appendChild(button);
    testdiv.appendChild(button2);
    //testdiv.appendChild(elea);
    //elea.appendChild(eleimg);

    //eleimg.style.display="none";

    //document.getElementById("elea").style.display="none";

    var newurl = "";
    var pagenum = 0; //图片页数
    var imgname = ''; //漫画名称

    var x = 1;

    //拿到当前页面所有预览图片对应的URL
    var baseUrl = window.location.href;

    button.onclick = function getimgurl(){
        alert("开始获取")
        pagenum = document.getElementsByClassName('badge badge-pill badge-secondary float-right')[0].innerText;
        pagenum = pagenum.substr(0,pagenum.length-1);
        imgname = document.getElementsByClassName('h4 font-weight-bold title mb-2')[0].innerText;

        //eleimg.setAttribute("alt",imgname);

        if(pagenum>59){
            sleep(1000);
        }else{
            for(let i = 1;i<=pagenum;i++) {
                newurl = baseUrl + '/'+i
                geturl();
            }
        }

        alert("共获取"+pagenum+"页!开始下载!")
        //console.log(imgUrl)

        downloadimg();

    }

    function sleep(n){
        if(x <= pagenum){
            newurl = baseUrl + '/'+x
            //console.log(x)
            geturl();
            x = x+1

            var start = new Date().getTime();
            //  console.log('休眠前:' + start);
            while (true) {
                if (new Date().getTime() - start > n) {
                    break;
                }
            }
            // console.log('休眠后:' + new Date().getTime());
            sleep(1000);

        }else{
            console.log("获取完成!")
        }


    }



    //ajax同步请求获取url
    function geturl(){
        $.ajax({
            type:'get',
            url:newurl,//这里是url
            async: false,
            //data就是内容了,也就是url网页中的内容
            success:function(data){
                //正则表达式截取图片url
                var srcReg = /"(.*?)"/g
                var arr = data.match(srcReg)[162]
                arr = arr.substr(1,arr.length-2)

                imgUrl.push(arr)
                //console.log(arr)


            }
        });
    }

    function downloadimg(){
        alert("开始下载!")
        for(let a=0;a<=imgUrl.length-1;a++){
            GM_download({
                url:imgUrl[a],
                name:"picture"+a,
                onload:function(){
                    console.log("下载第"+(a+1)+"张成功!")
                },
                onerror:function(e){
                    console.log("下载第"+(a+1)+"张失败!")
                    console.log(e)
                    onErrorArr.push(imgUrl[a])
                },
                ontimeout: function(){
                    console.log("下载第"+(a+1)+"张超时!")
                    timeOutArr.push(imgUrl[a])
                },
                onprogress:function(e){
                    //console.log(e)
                }
            })
        }

        //  GM_download(imgUrl[6],"picture"+6);
        //  GM_download(imgUrl[8],"picture"+8);
        //  GM_download(imgUrl[9],"picture"+9);
        //  GM_download(imgUrl[11],"picture"+11);
        //  GM_download(imgUrl[17],"picture"+17);
        //  GM_download(imgUrl[18],"picture"+18);
        //  GM_download(imgUrl[20],"picture"+20);
        //  GM_download(imgUrl[33],"picture"+33);
        //  GM_download(imgUrl[40],"picture"+40);
        //  GM_download(imgUrl[41],"picture"+41);
        //  GM_download(imgUrl[42],"picture"+42);
        //  GM_download(imgUrl[45],"picture"+45);
        //  GM_download(imgUrl[46],"picture"+46);
        //  GM_download(imgUrl[47],"picture"+47);
        //  GM_download(imgUrl[48],"picture"+48);
        //  GM_download(imgUrl[49],"picture"+49);


        //GM_download(imgUrl[0],"aaa");

    }


    button2.onclick = function checkfailed(){
        if(!onErrorArr.length == 0){
            alert("有"+onErrorArr.length+"条图片下载失败!")
        }else{
            alert("未检测到下载失败图片!")
        }
        if(!timeOutArr.length == 0){
            alert("有"+timeOutArr.length+"条图片下载超时!")
        }else{
             alert("未检测到下载超时图片!")
        }


    }



    //alert("获取完成!")

    // Your code here...
})();