上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

为图片添加下载按钮,鼠标下滚20次后,下载失效了

[复制链接]

该用户从未签到

1

主题

1

回帖

6

积分

助理工程师

积分
6
发表于 2021-12-11 14:45:41 | 显示全部楼层 | 阅读模式
悬赏1油猫币已解决

看到个脚本是 给网站添加批量按钮,点击按钮后能打开大图,然后再手动下载。
原始脚本 地址  https://greasyfork.org/zh-CN/scripts/398197-堆糖下载原图

现在尝试把点击按钮后图片在新窗口打开,修改成点击按钮后直接下载图片。
前面1-3页,都能点击按钮后成功下载,
但在鼠标向下滚动10-20次后,点击按钮后下载会无效。

案例网址:
https://www.duitang.com/search/?kw=李现&type=feed

// ==UserScript==
// @name         堆糖下载
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       wlor
// @match        https://www.duitang.com/album/?id=*
// @match        https://class.duitang.com/album/?id=*
// @match        https://www.duitang.com/search/?kw=*
// @grant        GM_download
// ==/UserScript==

(function() {
    'use strict';
     function append_download_btn() {
  let picList = $('.woo-pcont .woo');
  for (let i = 0; i < picList.length; i++) {
    let no_btn = picList.eq(i).find(".download_btn2").length === 0;
    if (no_btn) {
      let original_url = picList.eq(i).find('.mbpho>.a>img').attr('src').replace(/\.thumb\.400_0/, "");
      let button = document.createElement("a");
      button.className = "download_btn2";
      button.innerText = "下载";
      button.style.position = "absolute";
      button.style.right = "0";
      button.style.top = "0";
      button.style.zIndex = "10";
      button.style.backgroundColor = "rgba(0,0,0,.5)";
      button.style.color = "#fff";
      button.style.padding = "0 10px";
      button.style.height = "30px";
      button.style.lineHeight = "30px";
      button.style.cursor = "pointer";
      button.href = original_url;
      button.target="_blank";
      picList.eq(i).append(button);
      //---增加的部分  增加了下载权限 GM_download 。    和匹配的网址  https://class.duitang.com/album/?id=*  https://www.duitang.com/search/?kw=*
       button2.addEventListener('click',() => {
       GM_download(original_url,(decodeURI(original_url).split("/")[7]));
        });
      //---增加的部分
    }
  }
};

function debounce(fn, wait) {
  var timeout = null;
  return function () {
    if (timeout !== null) clearTimeout(timeout);
    timeout = setTimeout(fn, wait);
  }
}
window.addEventListener('scroll', debounce(append_download_btn, 500));
append_download_btn()
    // Your code here...
})();

最佳答案

查看完整内容

我看了一下,应该是图片后缀的问题,前面的图片都是jpg/jpeg,后面的图片变成了jpeg_webp(好像是浏览器自动做的压缩),然后你下载的时候文件名设置的XXX.jpeg_webp,这一后缀不受支持,导致下载失败。改一下文件名就行了:
  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    862

    回帖

    1360

    积分

    荣誉开发者

    积分
    1360

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-12-11 14:45:42 | 显示全部楼层
    我看了一下,应该是图片后缀的问题,前面的图片都是jpg/jpeg,后面的图片变成了jpeg_webp(好像是浏览器自动做的压缩),然后你下载的时候文件名设置的XXX.jpeg_webp,这一后缀不受支持,导致下载失败。改一下文件名就行了:
    1. GM_download(original_url, decodeURI(original_url).split("/")[7].replace(/_webp$/, ''));
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    636

    主题

    5187

    回帖

    6069

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6069

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2021-12-11 15:10:24 | 显示全部楼层
    这个我没太理解具体遇到了什么问题...
    测试了一下脚本也没太懂功能
    但是遇到与逻辑不符
    可以打debugger断点一步一步跟,可能你处理哪里没搞好
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表