IMG_0001

Pixiv運営より過剰ログインとの警告を受けました

対処法について以下の記事にまとめています
Pixiv運営より過剰ログインの警告を受けました


お久しぶりです
長らく放置して久しぶりに自分のブログを見たら、livedoor blog の独自ドメインの IP アドレスが変更になったとかでアクセスできなくなっていてびっくりしました。
それはそれとして本題です。
長らく Pixiv の巡回と気に入った画像のダウンロードを日課としている私ですが、先日巡回環境を一新したところ作業効率がぐんと上がったので、その方法を紹介します。

Pixivutil2

これが無ければ始まりません。
Git に登録されている Python を用いた Pixiv 用のスクリプトです。
GitHub - Nandaka/PixivUtil2: Download images from Pixiv and more!
インストール方法などは以下の過去記事を参照してください。
APNG に対応したビューア Honeyview を導入したら APNG いらなくなった : デンジパ弐號店
正直、インストールしたのが大分前なので私もよく覚えてません。
上記記事のころからアップデートがあって必須パッケージが変わっていますが、Git のページのRunning from source code というところに必要なパッケージが書いてあるので、Python の勉強がてら頑張ってインストールしましょう。

Python 自作スクリプト

Pixivutil2 に機能はたくさんあるのですが、たくさんありすぎてよくわからないので私はイラスト ID から直接ダウンロードする機能しか使っていません。
つまりブラウジングしながらダウンロードしたいイラストの ID 一覧を保存しておく必要があります。
長らく CliPla (Vector Download) というコピーした文字列を記録していってテキストファイルに出力できるフリーソフトを使っていました。
しかしいちいち保存しなければいけなかったり 512 件しか記録できなかったり、保存した URL を Pixivutil2 を使うバッチ処理の記述に置換しなければいけなかったりと不満もありました。
そこで、どうせ Pxivutil2 で Python 2.7 入れてるんだからそれで何とかすればいいではないかという事に気づき、自作スクリプトを作ることにしました。
そこで完成したのがこちら。

再追記(2019年5月4日)

以下のスクリプトだとログインを何度も繰り返すことになりPixivアカウントがbanされる可能性があります。実行しないでください。
# -*- coding: utf-8 -*-
import win32api
import win32com.client
import win32clipboard as CB

win32api.Sleep(500)
shell = win32com.client.Dispatch("WScript.Shell")

command = 'python C:\Python27\PixivUtil2\pixivutil2.py -x -s 2 '
url = "https://www.pixiv.net/member_illust.php?mode=medium&illust_id="
output = 'C:\download\list.bat'

print "Start Clipbord check"

CB.OpenClipboard()
text1 = CB.GetClipboardData(1) #1 -> CF_TEXT
CB.CloseClipboard()

count = 1

while 1:
  win32api.Sleep(200)
  CB.OpenClipboard()
  text2 = CB.GetClipboardData(1) #1 -> CF_TEXT
  CB.CloseClipboard()
  if text1 != text2:
    text1 = text2.replace( url,command )
    if text1 != text2:
      text = '%s\n' % text1
      while 1:
        try:
          with open ( output, 'a' ) as f:
            try:
              f.write ( text )
              break
            except IOError as e:
              print ('except: Cannot write')
        except IOError as e:
          print ('except: Cannot open')
        win32api.Sleep(200)
      print("\007")
      text = '{0} : {1}'.format( count, text1 )
      print text
      count+=1
    text1 = text2

上記をテキストファイルにコピーして、ファイル名を"clipsave.py"とかにして実行すれば黒いウィンドウが表示されて、後は Pixiv のイラストページの URL をコピーすれば C:\download のフォルダに list.bat というバッチファイルが生成されるので、どんどんコピーしていって終わったら list.bat をダブルクリックして実行すれば C:\download にイラストがどんどん保存されます。
もしかしたら pywin32 も入ってないと動かないかもしれません。(私は Build221 の pywin32-221.win-amd64-py2.7.exe をインストールしました) https://sourceforge.net/projects/pywin32/files/pywin32/

X-Mouse Button Control

最後に、ブラウザでイラストページから個別イラストページの URL を簡単に取得する方法です。
私は Google Chrome を使っているのですが、検索結果や新着ページのサムネイルを右クリックして"リンクのアドレスをコピー"を選択して URL をコピーしていました。
そのうち、右クリックを押してからキーボードの "E" を押せば良いことに気づき、長らくそれで巡回していました。
しかし両手をつかわなければいけないため、疲れます。
なんとか簡単にする方法は無いか調べたところ、X-Mouse Button Control を使う方法を見つけました。
XMouse Button Control
これはアプリケーション別にマウスのボタンの動作を自由にカスタマイズすることのできるフリーソフトです。
私はマウスに ELECOM M-XGL 10DB という物を使っているのですが、これには第4ボタンと第5ボタンが付いています。


この 4,5 ボタンを押したときにリンクのアドレスをコピーするようにすればワンボタンでできます。
しかし設定に難儀しました。
難儀した挙句、以下のような設定にしました。
キャプチャ
"{RMB}{HOLDMS:100}eee{WAITMS:50}e{WAITMS:50}e"
つまり右クリックを押してから e 連打です。
直接リンクのアドレスをコピーを呼び出す方法がいくら探しても見つからないので、右クリックを押してメニューからショートカットキーの e で選択する方法なんですが、PC の処理速度で右クリックメニューが開かれるのにどれくらい時間がかかるのかわからないのでとりあえず e 連打して強引に解決しています。

快適な Pixiv 巡回ライフ!

もうあとは自作スクリプトを起動させて Pixiv で表示されているサムネイルにカーソルを合わせてマウスの 4,5 ボタンを押しまくって、巡回が終わったら自作スクリプトを終了し、バッチファイルを実行してダウンロードが終わるのを待つだけです。
何度も改善を重ねてきた Pxiv 巡回ライフですが、当分はこの方法を続けると思います。
ではみなさんも良き Pixiv 巡回ライフを!