// ==UserScript==
// @name 孔夫子旧书网图片下载(自动去水印)
// @description 批量下载孔夫子旧书网图片,并自动去水印
// @version 4.2
// @author 路人甲乙丙
// @namespace iblogc
// @match *://search.kongfz.com/*
// @match *://book.kongfz.com/*
// @match *://item.kongfz.com/*
// @match *://book.kongfz.com/C*
// @grant GM_addStyle
// @grant GM_download
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @license Apache License, Version 2.0
// @require https://cdn.jsdelivr.net/npm/regenerator-runtime@0.14.1/runtime.min.js
// @homepage https://greasyfork.org/zh-CN/scripts/467062
// @downloadURL https://update.greasyfork.icu/scripts/467062/%E5%AD%94%E5%A4%AB%E5%AD%90%E6%97%A7%E4%B9%A6%E7%BD%91%E5%9B%BE%E7%89%87%E4%B8%8B%E8%BD%BD%EF%BC%88%E8%87%AA%E5%8A%A8%E5%8E%BB%E6%B0%B4%E5%8D%B0%EF%BC%89.user.js
// @updateURL https://update.greasyfork.icu/scripts/467062/%E5%AD%94%E5%A4%AB%E5%AD%90%E6%97%A7%E4%B9%A6%E7%BD%91%E5%9B%BE%E7%89%87%E4%B8%8B%E8%BD%BD%EF%BC%88%E8%87%AA%E5%8A%A8%E5%8E%BB%E6%B0%B4%E5%8D%B0%EF%BC%89.meta.js
// ==/UserScript==
"use strict";function _asyncToGenerator(n){return function(){var e=n.apply(this,arguments);return new Promise(function(n,t){function o(r,a){try{var i=e[r](a),s=i.value}catch(n){return void t(n)}if(!i.done)return Promise.resolve(s).then(function(n){o("next",n)},function(n){o("throw",n)});n(s)}return o("next")})}}!function(){function n(){var n=Object.values(R),t=n.indexOf(T),r=(t+1)%n.length,a=n[r];if(a===R.CUSTOM_WATERMARK&&!q)return alert("请先在设置面板中上传自定义水印图片"),void o();T=a,GM_setValue("watermarkRemovalMethod",a),alert("已切换为"+e(a)+"方式")}function e(n){switch(n){case R.CANVAS_COVER:return"纯色覆盖";case R.CUSTOM_WATERMARK:return"自定义水印";case R.CROP_BOTTOM:return"裁剪底部";default:return"未设置"}}function t(){var n=document.createElement("div");return n.className="settings-panel",n.innerHTML='\n
\n \n
\n
ⓘ
\n
\n 系统会优先使用完美去水印方式,\n 仅在该方式失效时(目前失效率很高)才会使用以下备选方案。\n
\n
\n\n
\n\n
\n
自定义水印图片
\n
\n 脚本会自动缩放水印图片,以适应水印区域,并且保持水印图片比例,宽:高=5:2的图片刚好能覆盖水印区域。\n 当然你也可以上传其它比例图片,不管怎样的水印图片,脚本都会自动缩放以覆盖水印区域。\n \n
\n \n \n
\n '+(q?'
\n

\n
':"")+'\n
\n
\n \n ',n}function o(){var n=document.createElement("div");n.className="settings-overlay",document.body.appendChild(n);var e=t();document.body.appendChild(e),e.querySelectorAll('input[name="watermarkMethod"]').forEach(function(n){n.addEventListener("change",function(){e.querySelector("#customWatermarkSection").style.display=n.value===R.CUSTOM_WATERMARK?"block":"none"})}),e.querySelector("#saveSettings").onclick=function(){var t=e.querySelector('input[name="watermarkMethod"]:checked').value;T=t,GM_setValue("watermarkRemovalMethod",t),GM_setValue("customWatermarkBase64",q),alert("设置已保存"),e.remove(),n.remove()},e.querySelector(".close-button").onclick=function(){e.remove(),n.remove()},e.querySelector("#watermarkFile").onchange=function(n){var t=n.target.files[0];if(t){var o=new FileReader;o.onload=function(n){q=n.target.result;var t=e.querySelector(".preview-image");if(t)t.src=q;else{var o=document.createElement("div");o.className="preview-wrapper";var r=document.createElement("img");r.src=q,r.className="preview-image",o.appendChild(r),e.querySelector(".file-upload").insertAdjacentElement("afterend",o)}},o.readAsDataURL(t)}},e.querySelector("#devService").addEventListener("click",function(n){n.preventDefault(),z()}),e.querySelector("#donation").addEventListener("click",function(n){n.preventDefault(),g()})}function r(n){B=n,localStorage.setItem(A,n)}function a(){D=!0,localStorage.setItem(O,"true")}function i(n){return n.replace(/(_water|_n|_p|_b|_s)/g,"")}function s(n,e){var t=n.createElement("button");t.innerText="👉 下载图片",t.className="searchPageDownloadButton item-button",t.style.backgroundColor="#8c222c",t.style.color="white";var o=e.querySelector("div.add-cart-btn")||e.querySelector("div.add-cart-button");return o.parentNode.insertBefore(t,o.nextSibling),t}function c(n,e){var t=n.createElement("button");t.innerText="👉 下载图片",t.className="searchPageDownloadButton item-button",t.style.backgroundColor="#8c222c",t.style.color="white";var o=e.querySelector("div.add-cart-btn")||e.querySelector("div.add-cart-button");return o.parentNode.insertBefore(t,o.nextSibling),t}function d(n,e){var t=n.createElement("button");t.innerText="👉 下载图片",t.className="bookListPageDownloadButton",t.style.backgroundColor="#8c222c",t.style.color="white";var o=e.querySelector("a.con-btn-cart");return o.parentNode.insertBefore(t,o.nextSibling),t}function l(n,e){u(n,e)}function p(n){var e=n.querySelectorAll("ul#figure-info-box > li");return Array.from(e,function(n){return n.querySelector("img").getAttribute("_viewsrc")})}function u(n,e){function t(){e.style.lineHeight="20px",e.innerText="📢总计:"+o.length+"\n✨完美去水印:"+s+"\n🎨备选去水印:"+c+"\n🔄未去水印:"+d+"\n😭下载失败:"+l+"\n",e.appendChild(a),l>0?(e.style.backgroundColor="#c97c75",e.style.color="#fff"):(e.style.backgroundColor="#7b7475",e.style.color="#fff")}var o=p(n);e.style.cursor="not-allowed";var a=document.createElement("a");if(a.href="#",a.textContent="🐛问题反馈",a.style.color="#ffeb83",a.onclick=function(n){n.preventDefault(),f("https://greasyfork.s3.us-east-2.amazonaws.com/lp9hdyffstt0wpz2ub39gw9p6srr")},0===o.length)return e.innerText="🧐商品详情中没\n有图片可以下载\n",e.style.backgroundColor="#ccc",e.style.color="#999",a.style.color="#b55222",void e.appendChild(a);e.disabled=!0,e.innerText="Downloading...";var s=0,c=0,d=0,l=0,u=(n.querySelector('meta[name="keywords"]').getAttribute("content")||"").match(/([^,]+)/),m=u&&u.length>1?u[1]:"",h=(n.querySelector('meta[name="description"]').getAttribute("content")||"").match(/ISBN:([0-9]*)/),x=h&&h.length>1?h[1]:"";o.forEach(function(n,a){function p(i){var u=this,h=arguments.length>1&&void 0!==arguments[1]&&arguments[1],v=arguments.length>2&&void 0!==arguments[2]&&arguments[2],b=v?"original":h?T:"direct",y=C(a,m,x,f,b);console.log("开始下载图片:",{url:i,filename:y,isRetry:h,isOriginal:v,currentProgress:s+c+d+l+1+"/"+o.length}),GM_download({url:i,name:y,onprogress:function(n){e.innerText="Downloading...("+(a+1)+"/"+o.length+")"},onload:function(){v?(d++,console.log("原图下载成功 - 总进度: "+(s+c+d+l)+"/"+o.length)):h?(c++,console.log("Canvas处理图片下载成功 - 总进度: "+(s+c+d+l)+"/"+o.length)):(s++,console.log("直接去水印下载成功 - 总进度: "+(s+c+d+l)+"/"+o.length)),s+c+d+l===o.length&&(console.log("所有图片处理完成:",{"直接去水印成功":s,"Canvas处理成功":c,"原图下载":d,"失败":l}),t(),r(B+s+c+d),(B%100==0&&0!==B&&!D||B>1e3&&!D)&&g())},onerror:function(){var e=_asyncToGenerator(regeneratorRuntime.mark(function e(r){var a;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(h||v){e.next=15;break}return console.log("无水印链接下载失败,尝试Canvas处理...",r),e.prev=2,e.next=5,M(n);case 5:a=e.sent,p(a,!0,!1),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.log("Canvas处理失败,降级到原图下载:",e.t0),p(n,!0,!0);case 13:e.next=16;break;case 15:h&&!v?(console.log("Canvas处理图片下载失败,降级到原图下载:",r),p(n,!0,!0)):(l++,console.error("图片下载完全失败:",r),s+c+d+l===o.length&&t());case 16:case"end":return e.stop()}},e,u,[[2,9]])}));return function(n){return e.apply(this,arguments)}}()})}var u=i(n),f=(u.split(".").pop()||"").toLowerCase();m.trim(),x.trim();p(u)})}function g(){k();var n=document.createElement("div");n.classList.add("overlay"),document.body.appendChild(n);var e=document.createElement("div");e.classList.add("donation-popup"),e.innerHTML='\n \n \n
🙏感谢您选择此工具!捐赠是对我最大的支持,也能帮助工具不断改进与维护。
\n
\n

\n

\n
\n
\n \n
\n ',document.body.appendChild(e);var t=e.querySelector(".close-button");e.querySelector("#donateBtn").addEventListener("click",function(){alert("🙏感谢您的支持!如果有问题,欢迎联系微信:Byte4Me"),e.remove(),n.remove(),a()}),t.addEventListener("click",function(){e.remove(),n.remove()}),e.querySelector("#feedbackWeChat").addEventListener("click",function(n){n.preventDefault(),f("https://greasyfork.s3.us-east-2.amazonaws.com/lp9hdyffstt0wpz2ub39gw9p6srr")}),e.querySelector("#sideHustleGroup").addEventListener("click",function(n){n.preventDefault(),f("https://greasyfork.s3.us-east-2.amazonaws.com/7cjf1r8rohkrh8xwp0mn2srocx0u")}),e.querySelector("#devService").addEventListener("click",function(n){n.preventDefault(),z()})}function f(n){var e=document.createElement("div"),t=document.createElement("div");t.classList.add("image-popup"),t.innerHTML='\n \n