第一弹diyidan.com cos图片下载

在第一弹(diyidan.com)的cos页面上批量下载。

// ==UserScript==
// @name         第一弹diyidan.com cos图片下载
// @version      0.1
// @description  在第一弹(diyidan.com)的cos页面上批量下载。
// @author       hentailing
// @match        *://www.diyidan.com/main/post/*
// @icon 		https://www-static.diyidan.net/static/image/favicon.ico
// @run-at		document-end
// @namespace https://greasyfork.org/users/184461
// ==/UserScript==
"use script";
//base64转blob
const dataURLtoBlob = function(dataurl){
        let arr = dataurl.split(','),
                mime = arr[0].match(/:(.*?);/)[1],
                bstr = atob(arr[1]),
                n = bstr.length,
                u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new Blob([u8arr], {
            type: mime
        });
    };
    let body = document.getElementsByTagName('body')[0];
    let div = document.createElement('div');
    div.setAttribute('id', 'the-div');
    div.setAttribute('style', 'display: none;');
    //body.appendChild('<canvas id="canvas" style="margin:20px auto;display: none;">当前浏览器不支持canvas</canvas>');
    body.appendChild(div);
    const download  = function(url){
        console.log('开始下载:'+url);
        let cav = document.createElement('canvas');
        cav.setAttribute('id', 'canvas');
        cav.setAttribute('style', 'margin:20px auto;display: none;');
        cav.innerText = '当前浏览器不支持canvas';
        let theDiv = document.getElementById('the-div');
        theDiv.innerHTML = '<canvas id="canvas" style="margin:20px auto;display: none;">当前浏览器不支持canvas</canvas>';
        let canvas = document.getElementById('canvas');
        let index = url.lastIndexOf("\/");
        const filename = url.substring(index+1, url.length);
        index = url.lastIndexOf(".");
        const ext = url.substring(index+1, url.length);
        let type;
        switch (ext){
            case 'jpg':
                type = 'image/jpg';
                break;
            case 'png':
                type = 'image/png';
                break;
            case 'gif':
                type = 'image/gif';
                break;
            default :
                console.log('图片后缀有误');
                return false;
        }
        let imgObj = new Image();
        imgObj.src = url;
        imgObj.setAttribute('crossOrigin', 'anonymous');
        imgObj.onload = function(){
            canvas.width = this.width;
            canvas.height = this.height;
            canvas.getContext("2d").drawImage(this, 0, 0);
            let data = canvas.toDataURL(type);
            let blob = dataURLtoBlob(data);
            let downloadUrl = URL.createObjectURL(blob);
            let a = document.createElement('a');
            a.setAttribute('href', downloadUrl);
            a.setAttribute('download', filename);
            body.appendChild(a);
            a.click();
        };
    };
//声明自动下载的函数
let downloadAll = function(){
    alert('点击成功');
    // 1楼的图片
    let pic_1L = document.querySelectorAll('.user_post_content a');
    if (pic_1L.length > 0) {
        for (let index = 0; index < pic_1L.length; index++) {
            download(pic_1L[index].href);
        }
    }
    // 楼主在底下发的图
    let louzhu = document.querySelectorAll('.louzhu'); //第一个.louzhu就是1楼,所以跳过
    if (louzhu.length > 1) {
        for (let index = 1; index < louzhu.length; index++) {
            const pic_else_lou = louzhu[index].parentNode.parentNode.querySelectorAll('.post_content_img a');
            for (let index2 = 0; index2 < pic_else_lou.length; index2++) {
                download(pic_else_lou[index2].href);
            }
        }
    }
};
let clickDiv = document.createElement('div');
clickDiv.style = "font-size: 18px ;position: fixed; top:180px; right: 1px; width: 150px; height: 90px; background-color: #002DFF; border-radius: 10px; color: white;text-align: center; line-height: 90px;cursor:pointer";
clickDiv.id = 'clickDiv';
clickDiv.innerText = '点我下载';
let user_post_title1 = document.querySelector('body');
user_post_title1.append(clickDiv);
let theDiv = document.getElementById('clickDiv');
theDiv.addEventListener('click', downloadAll);