0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pixivでお気に入りのイメージを一括ダウンロードする

Last updated at Posted at 2025-06-25

pixivで大量イメージをダウンロードしたい

pixivでお気に入りのユーザのイメージをダウンロードしたいけど、量が多いケースがり大変なことがあるかと思います。
その手順を可能な限り自動化したいと思います。

まずは対象のイメージを一括で開く。

ユーザの作品一覧ページ
(例)https://www.pixiv.net/users/*******/artworks
から
纏めてイメージを開いてダンロードするため、Firefoxのアドオン「Snap Links」を使用して対象のページを開きます。(1つ1つ開いても良いと思います)

しかしページを開いた先に複数イメージが登録されているページ構成だと、それぞれのタブを開いて1回1回イメージ(「すべてを見る」ボタンを含む)をクリックして展開していく必要があります。

ユーザスクリプトで「すべて見る」ボタンを自動でクリックさせる

そこでページロードが終わったところでFirefoxのアドオン「Tampermonkey」でイメージ「URLにimg-masterを含む箇所」を自動でクリックするスクリプトを組みました。
(スクリプトアレルギーの方もいるかと思いますが、Tampermonkeyのアドオン内でスクリプトが実行できる環境が整えられており、複雑な環境構築などは必要ありません)

// ==UserScript==
// @name         Pixiv「表示する」ボタン or img-master画像クリック自動化
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  「表示する」ボタンがあればクリックし、なければimg-master画像をクリックします。
// @match        https://www.pixiv.net/artworks/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let showClicked = false;
    let imgClicked = false;

    function clickShowButton() {
        const btn = Array.from(document.querySelectorAll('button')).find(
            el => el.textContent.trim() === '表示する'
        );
        if (btn) {
            console.log('「表示する」ボタンをクリックしました');
            btn.click();
            return true;
        }
        return false;
    }

    function clickImgMasterImage() {
        const img = document.querySelector('img[src*="img-master"]');
        if (img) {
            console.log('img-master画像をクリックしました');
            img.click();
            return true;
        }
        return false;
    }

    const observer = new MutationObserver(() => {
        if (!showClicked) {
            showClicked = clickShowButton();
            if (!showClicked) {
                // 「表示する」ボタンが見つからなければimg-master画像をクリックする
                imgClicked = clickImgMasterImage();
                if (imgClicked) observer.disconnect();
            }
        } else if (!imgClicked) {
            imgClicked = clickImgMasterImage();
            if (imgClicked) observer.disconnect();
        }
    });

    window.addEventListener('load', () => {
        observer.observe(document.body, { childList: true, subtree: true });

        // 5秒待っても何も見つからなければimg-master画像クリックして監視解除
        setTimeout(() => {
            if (!showClicked && !imgClicked) {
                console.log('タイムアウト:直接img-master画像をクリックします');
                if (clickImgMasterImage()) observer.disconnect();
            }
        }, 5000);
    });
})();

またこれは、センシティブな画像を表示する際に表示される「表示する」ボタンのクリックにも対応しています。

イメージの一括ダウンロード

複数タブを含むイメージのダウンロードにはアドオンの「DownThemAll!」を使用しています。
ダウンロード要素の高速フィルタリングにイメージのURLである「img-original」を含めておくと、ターゲットとなるイメージを自動でダウンロードできます。

さいごに

ページ内に「reCAPTCHA」要素が組み込まれているのか最近大量に開くとエラーとなるケースがありますが、これは次回対応したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?