E-Hentai Galleriesの画像をまとめてダウンロードするスクリプト EHG
E-Hentai/ExHentai Galleriesの指定のギャラリーを自動でダウンロードするコマンドラインスクリプトです。
機能
- ExHentaiに対応
- URLからギャラリー内の全ての画像を適切なフォルダにダウンロード
- URLからギャラリー検索結果内の全ての項目をダウンロード
- ローカルフォルダのパスから前回のダウンロードを再開
- NGワードで外国語のギャラリーなどをダウンロード候補から除外
- 509エラー(アクセス過多)を可能な限りまで回避
- 指定のプロキシを経由してダウンロード可能
対応されていない要望
- 指定ページのダウンロード
- オリジナル画像(閲覧用に縮小されていない画像)のダウンロード
- ダウンロード開始後の新規項目の追加
- Mac/Linux/GUI/ウェブブラウザ上での実行
導入と使用方法
- 日本語版WindowsXP/Vista/7での動作が確認されています。8は微妙です。
- Perl5実行環境が必要です。ActivePerlなどをあらかじめ導入してください。
- 当スクリプトをダウンロードし、Unicode文字を含まないパスに設置してください。
- 設定ファイル(
settings.txt
)にe-hentai.orgで登録したID/PWを記入してください。 EHG.bat
を起動し、手順に従ってURL/フォルダのパスを入力してください。- 二度改行した時点で入力された項目のダウンロードが開始されます。
詳細な使用方法については同梱のreadme.txt
を参照してください。
よくある質問と回答
○○ is experimental
みたいなエラーがスクリプト起動時に表示される- 問題ありません。
○○ does not map to △△
みたいなエラーが大量に出てクラッシュするスクリプトのフォルダをUnicode文字を含まないパスに移動してください。
たとえば日本語が含まれるパスの下ではバグります。
それでもクラッシュする
- スクリプト1312行目付近の
if(1)
をif(0)
に書き換えてください。
- スクリプト1312行目付近の
ログインに失敗しました
と表示される- 設定ファイルにe-hentai.orgで登録したID/PWを記入してください。
重複ファイルを読み込んでいます...
でフリーズする、もしくはメモリが大量に消費されるダウンロード済みのフォルダをスクリプトのフォルダから移動するか、
設定ファイルの事前読み込みの値を
0
に設定してください。
(^e^)b
から進まない- エンターキーを押してください。
URLをタイプするのが面倒臭い
Access failed. Trying again
が延々と続くスクリプトを中断してリジューム機能で再開してください。
設定ファイルの
509エラー回避
の値を0
に設定してください。
特に何の警告や表示もないままダウンロードが全く進まない
- 設定ファイル内
画像ページ設定
のspeed
の値を3
とか5
か適当に上げてください。ダウンロード速度は落ちますが長期的に安定します。
- 設定ファイル内
今後のアップデートについて
現行スクリプトのアップデートは事実上終了しました。ただし後継ツールとしてFirefoxアドオンとしての移植・拡張作業を進めています。現行スクリプトにない利便性と直観的操作の提供を期待しています。ぜひご理解と変わらぬ応援のほどよろしくお願い致します。
不具合報告・意見要望について
機能の根幹に関わる不具合であれば当記事に報告していただき次第に対応するつもりです。ただし上記のアドオンが完成し次第それも終了させていただきます。コメント欄を情報交換にお使いください。
開発者向け情報
維持(・開発)をしていただける方を募集しています。というか特にライセンスも何もないので、適当に改造・修正してこの記事のコメントにリンクを載せていただくという形でも全く問題ありません。EHG.bat
の実体はpl2bat
スクリプトによってBATスクリプトに埋め込まれたPerl5コードです。なのでヘッダ・フッタを除いて拡張子を変えれば純粋なPerl5スクリプトです。持ち運び便利のため全てのコードを1ファイルにぶち込んでいます。E-Hentai GalleriesのHTML・URLの解析・生成は可能な限り全てEhg
パッケージに押し込んであります。ただしHTML解析などの知識が全く無い状態で正規表現でゴリ押しした感じなので、何か根本的な問題があれば恐らくちゃんとしたパーサでゼロから書きなおすほうが早いと思います。JS版のAPIをGitHubに公開してあるので参考にしてください。ご質問などありましたら当記事のコメントなりTwitterのDMなりでお知らせください。