Greasy Fork

下载Pixiv图片到Eagle

*不维护了,能用多久是多久吧。*可通过油猴插件提供的按键修改部分功能设置。在Pixiv上添加可以导入图片到Eagle的下载按钮,默认保存所有标签以及标签翻译,以创作者名创建文件夹保存,能力有限暂无法处理动图。首页、排行榜、关注用户新作品页、收藏页添加下载按钮,添加复选框。自动将用户id添加进文件夹注释,同名文件夹注释中不存在id则更新注释添加id,尽量避免添加进同名不同id文件夹中。可批量下载全部作品和收藏。

< 脚本下载Pixiv图片到Eagle的反馈

评价:好评 - 脚本运行良好

§
发表于:2023-12-15

请问如果我想单独使用下载收藏里的所有作品的功能该使用那一段代码?

miracleXL作者
§
发表于:2023-12-15

bookmarksPage函数里给按键添加的点击事件函数那部分,不过应该是没办法直接搬到其他地方用的。

let count = $(BOOKMARK_SELECT).length;
$(BOOKMARK_SELECT).each((index, elem)=>{
    let e = $(SELECT_CHECK, elem)[0];
    if(e && e.checked){
        addToDownloadList("https://www.pixiv.net" + $(SELECT_URL, elem).attr("to"), DLMultiple);
        if(--count === 0){
            downloadList();
        }
        e.checked = false;
    }
    else if(--count === 0){
        downloadList();
    }
})

先遍历一遍页面中选择框,如果被选中了就添加进下载列表,遍历完开始下载。全大写的静态变量是定义在开头的jQuery选择器。

miracleXL作者
§
发表于:2023-12-15

不对看错了……是userPage函数里的那个按键

if (page === undefined){
    $(SHOW_ALL)[0].click();
}
else if(pageCount && pageCount != "1"){
    $(FIRST_PAGE)[0].click();
}
waitForPageLoaded(undefined, addAllArtToList);

page和pageCount的定义在上面,如果前两个判断现在是不是第一页,如果不是就翻回到第一页。当页面加载完成之后调用下载当前页面全部图片的函数。

function addAllArtToList(elements){
    let count = elements.length;
    console.log("从", document.URL,"获取到", count, "个作品链接");
    // if (count < 48){
    //     console.log("当前页面疑似未能加载完成,请之后手动下载……");
    // }
    elements.each((i,e)=>{
        addToDownloadList(e.parentElement.nextElementSibling.href, true);
        if(--count === 0){
            downloadList().then(() => {
                let nextpage = $(NEXT_PAGE)[0];
                if (nextpage === undefined || nextpage.hidden){
                    console.log("全部页面解析完成");
                }
                else{
                    nextpage.click();
                    waitForPageLoaded(elements[0], addAllArtToList);
                }
            });
        }
    });
}

发表回复

登录以发表回复。