Greasy Fork

Greasy Fork is available in English.

pixiv图片下载

Pixiv图片下载,添加一个🥰按钮用来下载图片

当前为 2024-02-25 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        pixiv图片下载
// @namespace    http://tampermonkey.net/
// @version      2024-02-22
// @description  Pixiv图片下载,添加一个🥰按钮用来下载图片
// @author       52lcx
// @match        https://www.pixiv.net/*
// @license        MIT
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js
// @icon         https://www.google.com/s2/favicons?sz=64&domain=pixiv.net
// @require      https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/jszip/3.6.0/jszip.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/history.js/1.8/native.history.min.js
// @grant         GM_xmlhttpRequest
// @grant         GM_download
// @grant         unsafeWindow
// ==/UserScript==
var old_url=""
var observer_url =new MutationObserver(function(){
    var now_url=document.head.querySelector('link[rel="alternate"]').getAttribute("href")
    console.log(location.href)
    if(old_url===now_url){return}
    else{old_url=now_url
         console.log("我们不一样")
         all_function();
        }
})
observer_url.observe(document.head,{attributes: true, childList: true, subtree: true})

function all_function(){
    var observer_insert =new MutationObserver(function(){
        var zan=document.querySelector(".LpzCoKsT5QQ0VW1c")
        if(zan){button();observer_insert.disconnect() }
        setTimeout(function(){observer_insert.disconnect()},10000)
    })
    observer_insert.observe(document.body,{subtree:true,childList:true})
    var observer_ads = new MutationObserver(function(mutationsList, observer) {
        var delete_ads = document.querySelector(".sc-h4y4ap-0.hReJzp");
        if (delete_ads) {
            console.log("存在")
            delete_ads.remove();
            observer_ads.disconnect()
        }
        setTimeout(function(){observer_ads.disconnect()},10000)
    });
    observer_ads.observe(document.body, { subtree: true, childList: true });
    setTimeout(function(){observer_ads.disconnect()},10000)
}

function button(){
    let setting =document.querySelector(".sc-181ts2x-2.bTImJG")
    var button = document.createElement("div");
    button.innerHTML = '<div id="download" @click="download" style="cursor:pointer">🥰</div>';
    setting.parentNode.insertBefore(button, setting);
    var styleElement = document.createElement("style");
    let style = `#download { font-size: 25px;
transform: translateY(5px); }`;
    styleElement.innerHTML = style;
    document.head.appendChild(styleElement);
    let button_app=new Vue({
        el:"#download",
        data:{clickcount:0},
        methods:{
            download:function(){
                this.$el.style.fontSize = "50px"

                this.clickcount++
                var all_image = document.querySelector(".sc-emr523-2.wEKy");
                if(all_image){all_image.click()}
                var long_image=document.querySelector(".sc-1mr081w-2.gyWxeX.gtm-manga-viewer-preview-modal-open")
                if(document.querySelector(".sc-d98f2c-0.sc-1y32dbe-0.bvRXUX.new-header-logo").getAttribute("href")=="/manga")
                {console.log("这是漫画")
                 localStorage.setItem("manga_name","title")
                 button_observe();
                 localStorage.setItem("button_click",'true')}
                else if (long_image) {
                    console.log("这是多组插画")
                    setTimeout(function(){
                        download_long()
                    },10000)
                }
                else{

                    download_short()

                }

                setTimeout(function(){this.$el.style.fontSize="25px"},10000)
            }
        }
    })}


// function select(){
//  if(location.href.match(/\bartworks\/\d+$/).length){download_long()}
// else if(location.href.match(/\bartworks\/\d+#1$/).length){manga()}

//}
// //下载短插画
function download_short() {
    console.log("正在下载短插画")
    var text="未命名"
    var url = document.querySelector(".sc-1qpw8k9-0.gTFqQV a").getAttribute("href");
    var element1 = document.querySelector(".sc-1u8nu73-3.huVRfc");
    var element2 = document.querySelector(".sc-f30yhg-1.hRmPFI div");
    if (element1 && element2) {
        var text1 = element1.innerText;
        var text2 = element2.innerText;

        text=text1+text2
    } else {
        console.log("至少一个元素未找到。");
    }

    GM_download({
        url: url,
        name: text+".png",
        saveAs: false,
        headers: { referer: "https://i.pximg.net/*" },
        onerror: function (error) {
            alert("下载失败,请重试!");
        },

    });
}
// //下载长插画
function download_long(){
    console.log("正在下载长插画")
    setTimeout(function(){

        var textElement1 = document.querySelector(".sc-1u8nu73-3.huVRfc");
        var textElement2 = document.querySelector(".sc-f30yhg-1.hRmPFI div");

        var text = "未命名"

        if (textElement1 && textElement2) {
            text = textElement1.innerText + "---" + textElement2.innerText;
        }

        var zip=new JSZip()
        var count=0
        var imgs=document.querySelectorAll(".sc-1e1hy3c-2.dSqYyx a");
        imgs.forEach(function(link,index){
            var url=link.getAttribute("href")
            GM_xmlhttpRequest({
                method:"GET",
                url:url,
                headers:{referer:"https://i.pximg.net/*"},
                responseType:"arraybuffer",
                onerror:function(){"下载失败,请重试🥰"},
                ontimeout:()=>{alert("下载超时,请重试")},
                onload:function(response)
                {if(response.status==200){
                    zip.file(index+1+ ".png",response.response,{binary:true})
                    count++
                    console.log(count)
                    if(count==imgs.length){
                        zip.generateAsync({type:"blob"}).then(function(content){
                            saveAs(content,text+".zip")
                        })
                    }

                }
                }
            })

        })},0)
}
//更新页面
function button_observe(){
    var button_click = new MutationObserver(function() {
        var button = document.querySelector(".sc-bdnxRM.jvCTkj.sc-gtsrHT.kJeMVE");
        if (button) {
            button.click();
            button_click.disconnect(); }
        setTimeout(function(){button_click.disconnect();},10000)
    });
    button_click.observe(document.body, { subtree: true, childList: true })}

//下载漫画
//sc-1oz5uvo-1 ivxzyL//漫画特有
function manga(title){
    alert("下载漫画时请切换至竖版阅读哦哦🥰,如果不是请重试")
    localStorage.setItem("button_click",'false')


    var imgs=document.querySelectorAll(".gtm-expand-full-size-illust")

    var zip= JSZip()
    var count=0
    console.log("开始下载漫画")
    imgs.forEach(function(link ,index){
        var url=link.getAttribute("href")
        GM_xmlhttpRequest({
            methods:"GET",
            url:url,
            headers:{referer:"https://i.pximg.net/*"},
            responseType:"arraybuffer",
            onerror:function(){"下载失败,请重试🥰"},
            onload:function(response)
            {if(response.status==200){
                console.log("请求成功")
                zip.file(index+1+ ".png",response.response,{binary:true})
                count++
                console.log(count)
                if(count==imgs.length){
                    zip.generateAsync({type:"blob"}).then(function(content){
                        saveAs(content,title+".zip")
                    })
                }

            }
            }

        })
    })
}

//监听按钮是否点击
var button_click = localStorage.getItem('button_click');
setTimeout(function(){
    //
    if (button_click === 'true' && location.href.match(/\bartworks\/\d+#1$/)) {
        var title=document.querySelector(".sc-1u8nu73-3.huVRfc").innerText
        manga(title);
    }

},10000)