以前よりアニメーション形式の PNG ファイルである APNG 対応のビューアを欲していましたが
Honeyview という画像ビューアが APNG に対応していることを知りました。


BMP, JPEG, GIF, PNG, TIFF 等の画像表示はもちろんの事
ZIP, LZH, RAR 等の圧縮ファイル内の画像も直接表示できます。
Windows 8.1 64bit でも右クリックメニューにきちんとメニューの追加削除ができます。
見開き機能やシームレスな拡大縮小には対応していませんが
動作も速く、メインのビューアとして申し分ない性能です。

さて、肝心の APNG の表示ですが、実はちょっと表示がおかしかったりします。
apngasm 3.1.3 を使って APNG を作成しているのですが
Firefox では問題なく表示されるファイルが Honeyview だとゴミが残る場合があります。
以前私も APNG を作成したことがあるのですが、仕様通りに作るとそうなったような気がします。
バグ報告をしたいところなのですが、開発元は日本ではないのでフォーラムは英語でちんぷんかんぷんです。
せっかく APNG 対応なのに困ったな…と思ったのですが何も困る必要はありませんでした。

・Honeyview 独自の機能 うごイラ形式に対応が素晴らしすぎる。
うごイラとは Pixiv のアニメーション投稿サービスの名称です。
GIF や APNG 等のアニメーション画像形式は用いず、
同じ大きさの画像ファイルを HTML5 で動かすという方式を取っています。
第三者の提供しているブックマークレットや Irvine でうごイラの画像を保存できるのですが、
それは単に zip で固められた複数の画像ファイルであってローカル上ではアニメーションしません。
なので私は劣化しない APNG に変換していたのですが、
Honeyview なら zip の拡張子を ugoira に変えることで直接読み込むことが可能になります。
つまりローカルでもうごイラが何の処理もせずに再生できるのです。

今まで APNG に変換していた手間と時間は何だったのか。
更に言ってしまえば APNG は仕様上 24bit フルカラーの PNG を使うため
元のファイルサイズより大きくなってしまう事が多いです。
比べてみると 4 倍近くになっていたりしました。
そのまま再生できるのであればもう APNG にする必要はありません。
また、うごイラ以外でも同様に zip で固めて ugoira に拡張子を変更すれば
自分でアニメーション画像ファイルを作成することも可能です。
APNG なんていらなかったんだ。

しかし実は問題点もあります。
うごイラは何 ms 表示させるかという delay が各画像に設定されています。
単に画像を zip で固めただけの ugoira ファイルでは
pixiv 側で標準の 125ms 固定となってしまいブラウザで見る動作と異なってしまいます。
それを防ぐためには zip 内に pixiv 上にあるうごイラの設定ファイルを入れる必要があるのですが…
そんなこと一個一個やっていたら面倒極まりありません。
そこで出番なのが Pixivutil2 です。

Pixivutil2 とは Python で動作する pixiv ダウンロードプログラムです。
何とこの Pixivutil2 は直接うごイラを ugoira ファイルにしてダウンロードする機能が搭載されています。
もちろん設定ファイルも含まれているので、ダウンロードしただけで完璧なうごイラが Honeyview で再生できます。
(フォーラムを見ると実は Honeyview にうごイラ対応をリクエストしたのも
 Pixivutil2 に ugoira 対応をリクエストしたのも同じ人だとわかったりします)
肝心の導入方法なのですが、かなり四苦八苦しました。
とりあえず覚書

1. Python 2.7.x のインストール
これが無ければ始まりません。
3.4.x はまったく違う仕様になっているので入れても Pixivutil2 は動きません。
Python のプログラムを実行する場合は開発した Python のバージョンに気をつけましょう。

2. 環境変数 PATH に C:\Python27;C:\Python27\Scripts を追加
コンピュータを右クリックしてプロパティ、システムの詳細設定から環境変数
ユーザー環境変数に path が既にある場合は ; で区切って後ろに追加。
無ければ新規で path を作って追加。
python インストール時に項目を有効にすると勝手にやってくれるみたいだけど
自分でやったほうが確実なので自分でやっています。

3. easy_install の導入
linux で言うところの apt-get 的なアレ。
パッケージ名を指定するだけでサーバーにアクセスしてインストールしてくれる便利ツール。
ez_setup.py を右クリックしてリンク先を保存。
コマンドプロンプトで保存先に cd で移動して python ez_setup.py で実行すればインストールできる。

4. socksipy-branch 1.02以上の導入
easy_install socksipy-branch と実行
以上

5. BeautifulSoup3 の導入
easy_install BeautifulSoup と実行
以上…とはいかなかった。
pixivutil2 を実行するとなぜか beautifulsoup が無いと怒られるので
ローカルに保存されている BeautifulSoup-3.2.1.tar.gz を見つけ出し
解凍して中身を pixivutil2 と同ディレクトリに入れるという荒業で解決。
本当はもっと良い方法あると思う。

6. mechanize の導入
easy_install mechanize と実行
以上…とはいかなかった。
easy_install 役立たずやん…。
しょうがないので以下より mechanize-0.2.5.zip をダウンロードして解凍。
python setup.py install と実行したらうまくいきました。

7. py2exe を導入したけど結局使わなかった
python のプログラムを Windows で直接使える exe 実行ファイルにするツールなんですけど
exe ファイルはできるものの実行するとエラーが出て動かなかったので諦めました。
どうせ pixivutil2 の変更が来たら Python 使う必要があるのでアンインストールできませんし
その都度 py2exe を使うのも面倒なので Python のまま使う事にしました。
使わなかったけど一応 py2exe の導入方法メモ
0.6.9 をダウンロードしてインストール。
python setup.py py2exe と実行すれば作れます。

8. pixivutil2 動作確認
python pixivutil2.py で pixivutil2 が実行できることを確認。
ユーザー名やパスワードを入力して出てくるコマンド一覧みたいなところで
試しに Download by image_id の 2 を入力して実行
その後に pixiv の作品ページの URL の最後の数字を入力して
ダウンロードが開始されれば動作確認終了。

9. 設定ファイルの変更
config.ini 内の
username と password に pixiv のログイン情報を記入。
createugoira を True に。
これでうごイラ形式をダウンロードするとは ugoira ファイルが生成される。
deleteZipFile はお好みで。
どうせ ugoira ファイルは zip ファイルなんだし私は False で。
filenameformat もお好みで


%artist% - %title% (%image_id%)
とかで良いんじゃないですかね。

10. バッチファイルで無理やり連続実行
あまり見慣れない実行画面に戸惑うが、コマンドラインオプションが使えるのでさくっとスルー。
てっきり image_id を列挙した list.txt とかから連続ダウンロードができるのかと思ってたのですが
Download from list は member_id 限定らしい。
何それ不便。
仕方ないのでバッチファイルで image_id を使って一個ずつ連続でダウンロードすることにした。


python c:\hogehoge\pixivutil2-master\pixivutil2.py -x -s 2 (ここにimage_id)
と記述した bat ファイルを実行すれば同ディレクトリにダウンロードされる。
-x オプションをつけないと連続実行されないので注意。
後はダウンロードしたい image_id 分だけ bat に記述していけば良いだけ。
別の処理を何度も呼ぶので、そのたびに pixiv にログイン処理してたら負荷かけて BAN されるのでは…
と思っていましたが、ちゃんとキャッシュを持っていてそれを使っているので毎度毎度ログイン処理はしていないようです。 

11. dir コマンドで作ったテキストファイルを EmEditor で置換
これは pixivutil2 全然関係ないけど覚書。
既に APNG 化してあるファイル名から image_id を抜き取るのに使った。
まずコマンドプロンプトから


dir /b C:\hoge\hoge\apng > C:\hooge\list.txt
でファイル名一覧をテキストに保存。
/b オプションをつけないとファイル名以外の情報が入って邪魔になる。
次に EmEditor で置換。
正規表現で置換できるエディターなら何でも良かったんだけど
何となく良さそうだったので EmEditor を導入してみた。
そのままだと起動するたびに 30 日間ライセンスライセンス煩いので Free 版にダウングレード。
試用版じゃなくて最初からフリー版を使わせてくれれば良いのにとも思うが
無料で使わせてもらっている分際で文句を言うのは良くないですね。

後は正規表現でファイル名からバッチファイルに使える記述に置換するだけなんですが…。
正規表現苦手なんですよね…。
とりあえず以下で練習してました。
/で囲む必要があるのに注意。
EmEditor で置換する際には / はいりません。
とりあえず例としては
元のファイル名が


hogehoge - hogehogeho(123456789).png
で、123456789 が image_id だとすると
正規表現を有効にし、


^.*\(([0-9]*)\).png
から


python C:\\hogehoge\\PixivUtil2\\pixivutil2.py -x -s 2 $1
に置換すれば


python c:\hogehoge\pixivutil2-master\pixivutil2.py -x -s 2 123456789
になる筈。



123456789_hogehoge_HQ.png
の場合は


^([0-9]*)_.*_HQ.png
で検索して


python C:\\hogehoge\\PixivUtil2\\pixivutil2.py -x -s 2 $1
で置換すれば


python c:\hogehoge\pixivutil2-master\pixivutil2.py -x -s 2 123456789
になる筈。

とりあえずこんなもんですかね。
 
読み込み速いしファイルサイズはそのままだし無劣化だし、
アニメーション画像フォーマットは ugoira で統一すれば良いんじゃないですかね。
新フォーマットとかいらん。
zip 最高。