自動開啟全部圖片並載入pixiv原始圖檔

若作品有多張圖片,自動將其展開;將原始圖檔自動載入。

// ==UserScript==
// @name 自動開啟全部圖片並載入pixiv原始圖檔
// @name:zh-TW 自動開啟全部圖片並載入pixiv原始圖檔
// @name:ja 全ての畫像を自動的に展開し、pixiv元の畫像を読み込む
// @name:en Expand All Images and Load Original Images on pixiv
// @description 若作品有多張圖片,自動將其展開;將原始圖檔自動載入。
// @description:zh-TW 若作品有多張圖片,自動將其展開;將原始圖檔自動載入。
// @description:ja 作品に複數の畫像がある場合、自動的に展開し、元の畫像を読み込みます。
// @description:en Automatically expands all images if the artwork has multiple images and loads the original images.
// @namespace Violentmonkey Scripts
// @icon https://www.pixiv.net/favicon.ico
// @match https://www.pixiv.net/artworks/*
// @version 1.07
// @author Max
// @license MIT
// ==/UserScript==

function convertImages() {
  var images = document.querySelectorAll("img");

  if (images.length > 0) {
    convertImage(images, 0);
  } else {
    console.log("抓不到圖片");
  }
}

function convertImage(images, index) {
  if (index >= images.length) {
    console.log("所有圖片轉換完成");
    return;
  }

  var image = images[index];
  var originalUrl = image.src;

  if (!originalUrl.includes("img-master") || originalUrl.includes("square")) {
    index++;
    convertImage(images, index);
    return;
  }

  var parentLink = image.parentElement;
  if (parentLink.tagName === "A" && parentLink.href) {
    image.src = parentLink.href;
    var convertedUrl = parentLink.href;
  } else {
    convertedUrl = originalUrl.replace("img-master", "img-original").replace("_master1200.jpg", ".png");
    image.src = convertedUrl;
  }
  index++;
  convertImage(images, index);

  image.addEventListener("load", function() {
    console.log("圖片載入成功:", originalUrl, "=>", convertedUrl);
    index++;
    convertImage(images, index);
  });

  image.addEventListener("error", function() {
    var retryCount = parseInt(image.getAttribute("data-retry-count")) || 0;
    if (retryCount < 3) {
      image.setAttribute("data-retry-count", retryCount + 1);
      console.log("圖片載入失敗,進行重試:", originalUrl, "=>", convertedUrl);
      convertImage(images, index);
    } else {
      console.log("圖片載入失敗,重試次數已達上限:", convertedUrl);
      index++;
      convertImage(images, index);
    }
  });
}

function pressButtonAndWait() {
  var button = document.querySelector(".sc-emr523-0.guczbC");
  if (button) {
    console.log("找到按鈕:", button);
    button.click();
  }
}

function mutationCallback(mutationsList, observer) {
  for (var mutation of mutationsList) {
    if (mutation.type === 'childList') {
        pressButtonAndWait();
      convertImages();
    }
  }
}
var observer = new MutationObserver(mutationCallback);

var observerConfig = {
  childList: true,
  subtree: true
};

observer.observe(document.documentElement, observerConfig);
convertImages();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址