見出し画像

AIでE-Hentai Galleriesの画像ダウンローダーを完成させたので配布します


前置き

E-Hentai Galleriesとは、老舗のエロ画像投稿サイトです。
今回は、AIフルスタックエンジニアリングの練習を兼ねてE-Hentai Galleriesのダウンローダーを作ってみました。当方はプログラミング素人なので、UIとか諸々残念なのですが、よければ使ってやってください。

2026/4/10追記 
 今まで未完成品をしれっと配布してて申し訳ありませんでした。その申し訳なさをバネに開発を頑張っておりましたが、ようやく完成したといえる品質なったので、良ければ使ってやってください。でもデバッグ不足から、環境や使い方次第ではエラーを吐くかもしれないので、その時はコメント欄にご一報ください。出来る範囲で対応いたします。

2026/4/27追記
ver3.3.0となる有償版を公開しました。詳細については下記リンクからご覧ください。


チップのご支援、お願いいたします🙇‍♂️

ページ下部の[チップで応援する]からご支援いただけたら幸いです

更新履歴

2025/5/7追記  以下の不具合を確認しております。

●キツめの表現のあるギャラリーをDL出来ない
(僕は普通(ノーマル)⋯◆)
●エラー発生時にDLが完了してしまう
(修正版ではエラー時に中断処理+自動再開処理の追加)

近日中に不具合に対処し、ついでに機能を大幅に追加した修正版を公開するので今しばらくお待ち下さい。満足なものが出来たら、いろんなサイトに応用していくので、興味のある方にフォローしていただけると嬉しいです。

2025/7/17追記  ver2.0 追加しました。
折角支援してくださった方もいらっしゃったのに、更新にかなり時間が掛かってしまって申し訳ございませんm(_ _)m
エターナっておりません!! 単純に手間取ってました!!
具体的な使用方法や作成の小咄、次に作りたいアプリなどのお話は次の記事で行いますので、よければそちらも読んでいただけたら幸いです。

Ver2.0の修正点・改善点
ギャラリーの検索結果画面のURLを入力するだけで自動的にDLリストを作成できる機能(パーサー機能)
●R18Gギャラリーへのアクセス改善
●GUIの改善
●保存フォルダ名のカスタム機能
●JPG品質スライドバー追加
●Gifアニメーション対応
★エラー時のレジューム機能の改善(seleniumなど高度な設定可能。一日中ダウンロードしても途切れないように)
●同名ファイルが存在する場合の処理の追加
●フォルダの圧縮機能
●高度なリサイズ機能
●DL未完了フォルダに自動的に接頭辞をつける機能
●設定やDLリストのバックアップ機能
●文字列の置換機能
 
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


2025/10/23追記
ご無沙汰でしたが、せっかくご支援をいただいたのでVer3.0にアップグレードしました。正直、Ver2.0は、正直、公開するのも躊躇うぐらい微妙だったのですが、ご支援してくださった方に顔向けできないと、一念発起して最初から作り直せて良かったです。結局20日以上掛かっちゃいましたが…

Ver3.0の修正点・改善点
●GUI改善(一画面に全表示させるの個人的ロマンだったが、やはり独りよがりだった…)
エラーハンドリング強化+レジューム機能改善(現行はエラーで普通に止まっちゃうので、ごめんなさい。とにかく安定感がなかったのを改善しました)
DLマネージャー機能(なんかかっこいいから追加しました)
TorrentファイルDLマネージャー機能(Torrentファイルぶっこ抜けます)
バックアップ機能改善(Ver2.0のはあんまり動作しませんでしたね。ぶっちゃけ(爆))
●DL情報のバックアップ(DL情報やタグを外部ファイルに保存します)
●Tips強化(マウスホバーでヒント出ます。文面は全部AIに考えてもらいました(爆))
ページ範囲指定機能(ご要望があったので追加しました)
●1000P以上のギャラリーからのDLに対応(現行ではまさかの999Pまでしか対応していないということが判明したので修正)
●1ページに20枚以上表示されるギャラリーに対応(このギャラリーは基本1ページに20枚の画像だと思ってたが、謎に21枚以上表示されるギャラリーが存在したので対応。よう分からんサイト)
●「同名ファイルが存在する場合の処理」オプションから選択肢排除(このギャラリーには一つのギャラリーに同じ名前の画像が複数存在するケースがあることが判明したので、その対策に選択肢を減らしました)
●他微調整

追加予定のない機能
●ログイン機能(ログインすればオリジナルサイズの画像をDL可能ですが、このサイト固有のポイント消費が必要なので当方としては魅力を感じません。またTorrentでオリジナルサイズの画像をDL出来たり、縦長画像は結構オリジナルサイズでDL出来るので実装予定はありません)
●プロクシ機能(串通してDLするのってどうなんだろうなって。一応仮実装しましたがリリース前に使えなくしてあります)
●マルチスレッド機能(複数のスレッドでDLを倍速化させる機能ですが、試しにやってみたら速攻でIP制限食らったので実装してません)
 
最後に
これでEHDのメジャーアップデートは終わりです。
今後は不具合対応のみになります。
今回得たノウハウでこれからもライフハック系・オタクハック系のアプリも作っていく予定なので、フォローあるいはチップで応援していただけると幸いです。 
 
2025/10/24
Ver3.1 微調整

2025/10/26
Ver3.1.1 Windows defenderにトロイ扱いされてたので対策を実施。それに伴って、3.1以前を削除。
具体的対策について
▶UPX圧縮を無効化
▶strip=Trueに設定

2025/11/18
Ver3.1.2(不完全版)

暫定版。安定感下がってるので非推奨。正しく取得されてないカスタムファイル名・フォルダ名用の変数が何個かあったので修正(Category、gid)。それに伴ってカスタム命名変数ヘルパーなる機能を実装。

ちなみに開発のために同じギャラリーに執拗にアクセスを掛けていたせいだと思いますが、Cloudflareさんに怒られてブロックされたのでしばらく開発できなくなりました。だから不完全版として出します。ご利用は計画的に。

2025/11/18 22:15 追記
20時ぐらいからcloudfareさんが世界中でエラー吐きまくってるらしい。どうやら私のIPだけが弾かれてる訳じゃないっぽいので良かった😅 復旧され次第、ぼちぼち修正します☺️
(参考) https://ameblo.jp/break-even-man/entry-12946793308.html

2025/11/27
 追記
Ver3.12公開

以下の問題が残ってるので近日中に直します。
・常時Seleniumモードが機能しない
・「ダウンロード範囲」オプションで「1行目のURLのみ」指定後にそのギャラリーをスキップし、次のURLの中断を押した後に正しく再開できない。


時間掛かりすぎたので未完成ながら早めに出します(プロでは絶対に通用しない考え方)。見た目全く変わってないんですけど、中身は作り直してるので時間掛かってすいません。最近、ようやく重い腰を上げてGUIの勉強したので、どういう設計が良いかちょっとだけ分かってきました。

2025/12/01 追記

Ver.3.13公開
・諸々の修正&安定性の向上
・圧縮後に「フォルダ削除」オプション追加(ニーズがあったので追加しました。安全策として子ディレクトリが存在する場合には削除しない)
・不要機能の整理・削除
・ログ整理

2025/12/05 追記
説明書追加

noteの記事として執筆したが規約違反?で投稿出来なかったのでpdf化してアップします😭

2026/2/23 追記
Ver.3.2.0公開
もうデバッグ疲れたんで見切り発車で出します😭
(1)スパゲッティコードと化していたCORE層の完全なリファクタリングによって動作が安定化・軽量化しました
(2)それに従ってユーザーが勝手なことできないように設計思想を変更しました
(3)エラー耐性の強化。稀にDL不可能な画像がありますが、何があってもダウンロードを止めない設計に変更しました。真に問題なのは「ダウンロード出来ないこと」ではなく「ダウンロードが止まること」「ダウンロードが失敗してるのに成功扱いになってること」。リファクタリングはこの設計思想でやりました
(4)DLリストの形式を変更しました。
(5)e-hentai固有のダウンロードフローをメインループから切り離したので、理屈の上では他サイトにも対応できるようにしました。

2026/3/31 追記
Ver.3.2.1公開

久しぶりに使ったらエラー復旧出来てなかったので修正しました😅すいません。
(1)放置していた設計違反を修正しました
(2)英語対応させました
(3)諸々の設計ミスを修正しました
(4)AIに丸投げしてexhentai.orgに対応させました。しかしながら私の経験上、AIに丸投げして解決できる規模の修正内容ではないので、おそらく失敗してます。もしもexhentaiにアクセスしている方で、このアプリを使ったらどういうエラーが発生するかコメント欄で教えてくれたら幸いです。無理そうだったら機能ごと消します。
尚、私のPCからexhentaiにアクセスしても真っ白なページしか表示されないので自分が確認することは不可能。ちなみにExhentai対応の downloaderは結構あるようですから、そちらを使うことをおすすめします。

2026/4/10 追記
Ver.3.2.2公開
同日 Ver.3.2.3公開
間違えてアップしたけど、数時間放置してしまったので置き換えるのではなくマイナーアップデートとして3.2.3として新しくリリースしました

このバージョンではH@H(Hentai@Home : e-hentai固有のキャッシュ分散型の画像配信システム)の仕様を理解したのでe-hentai.orgのダウンロードを完全にコントロールすることが可能になりました。感無量😭😭😭
これによってダウンロードが止まるということ自体がほぼなくなりました

(1)ノードのオート切り替え機能実装 品位の悪いノードに当たってもDLフローが止まらなくなりました。
(2)
ノードブラックリスト機能。質の悪い、または相性の悪いノードをブラックリストに入れて、以降はそこにアクセスしないようにします。
(3)403 forbidden対策実装。(説明:403 forbiddenは画像へのダイレクトリンクが期限切れになっているときに発生するエラーです。このエラー発生後に再度ダイレクトリンクを取得できるようにしました)
(4)報告されていた以下のエラーを修正「ValueError: Cannot set verify_mode to CERT_NONE when check_hostname is enabled」
(5)以下の微調整を実施
・保存フォルダ名にメインタイトル追加
・保存フォルダ名に連番(1から)追加
・ダウンロード範囲に「現在ジョブのみ」を追加
・全DL完了ダイアログ追加(ダウンロード完了時にダイアログで通知)
・いまいち機能してなかったエラー統計を手直し
・その他、微調整

残存バグ:バックアップから復帰後に正しいページ番号からDLを再開できない問題(1ページ目からならできる)

2026/4/16 追記
機能制限付きの「SimpleUI版 Ver.1.0.0」を公開しました。
これに伴い、過去バージョンは非公開としています。
SimpleUI版は、「基本設定」のみ利用可能で、入力できるURL数に上限があります。また、ご報告いただいていた不具合を修正し、マルチスレッドダウンロードに対応したVer.3.3.0以降については、有償版として後日公開いたします。(最大で約8倍のダウンロード速度に対応。ただし、利用状況によってはIP制限のリスクがありますのでご注意ください)
開発・保守の負荷を踏まえ、有償での提供とさせていただいております。何卒ご理解いただけますと幸いです。
なお、アプリの再配布はご遠慮ください。

2026/4/27 追記
有償版としてVer.3.3.0の公開をしました。詳細は下記リンクをご覧ください(note)
https://note.com/hibikan_frog/n/ned627cc95aba?app_launch=false

2026/5/2
 追記
無償版のLinux版とMac版をリリースしましたが、使えるか不明(爆)

使えるか不明なので有償版はなし
【動作未確認】EH_downloader_SimpleUI_Linux-1.0.0
【動作未確認】EH_downloader_SimpleUI_Mac-1.0.

2026/5/4 追記
未確認版削除or改修。マルチプラットフォーム対応に関しては私に知識がなかったのでもう少し勉強させてください🙇
また容量削減+微調整したEH_Downloader_SimpleUI 1.0.1公開



過去のVerについて


Ver1.0 Gemini1.5~2.0世代ぐらいの産物…
追記7/17:Ver2.0。多分、Gemini2.5と sonnet 3.5~3.7世代の産物
追記10/23 ver3.0
追記:02/23 Ver.3.2.0 sonnet 4.6世代
追記:02/23 Ver.3.2.0 ダウンロード画面

📄 免責事項(Disclaimer)


本ソフトウェア「EH_Downloader.exe」(以下「本ソフトウェア」)は、無償で提供されるものです。
本ソフトウェアの使用によって生じたいかなる損害(直接的・間接的・偶発的・結果的な損害を含む)についても、作者は一切の責任を負いません。

また、以下の事項についても保証いたしません:

  • 本ソフトウェアの正確性、完全性、安全性

  • 本ソフトウェアの中断またはエラーが発生しないこと

  • 本ソフトウェアがユーザーの特定の目的に適合すること

本ソフトウェアの使用は、すべてユーザーご自身の責任において行ってください。


OS対応状況 (Ver.3.2.2~) 2026/5/2 修正

AI判定なので悪しからず

Windows 10/11✅ 対応(開発・テスト環境)
Windows 7/8⚠️ 不可(Python 3.10+ が Windows 8 以降必須)
Windows 8.1△ 動作するが非推奨
macOS△ 動作するはずだが未テスト。動作未確認版としてリリース。駄目なら削除します
Linux△ 動作するはずだが未テスト。python3-tk パッケージが必要。動作未確認版としてリリース。駄目なら削除します

また過去の設定ファイルと後方互換性を担保してないので、新しいVerをDLしたら同じフォルダに生成されるehd_settings.jsonは削除した方が良い。

DLリンク

・EH_Downloader SimpleUI(無償版)1.0.0
・EH_Downloader 3.3.0 (有償・パス付き)


簡単な使い方(編集:2026/02/23)

(1)ギャラリーの個別ページのURLをコピーして、DLリスト(キュー)に貼ってください。右クリックメニューか「クリップボードから貼り付け」でOK

(2)保存ディレクトリを設定したら、実行ボタンを押してDLスタートです。DL中でもDLリストにURLを追加することが可能です。

(TIPs)一つずつ入力するのも面倒なので、検索結果に基づいて大量のURLを一括で入力することも可能です。↓↓

(3)DLリストの左上に「検索結果からDLリストの作成」というボタンがあります。これを押すと「検索結果パーサー」ウィンドウが立ち上がります。この上側の入力欄に「検索結果画面のURL」を貼り付けて「URL解析を実行」を押してください。検索結果の全てのギャラリーを取得できます。(取得数を増やしたいなら、ウィンドウ右上のギャラリーの取得数の値を増やしてください)
そこからフィルタリング機能をツ掛かって、自分の欲しいギャラリーを選択し、チェックマークを入れてください。データベースの左上の「すべて✓」ボタンを押すと、データベースの全てのギャラリーを選択したことになります。必要なギャラリーを選択した状態で「解析結果を出力」ボタンを押すと選択したギャラリーがDLリストに一括で追加されます。

(4)より詳細な使い方については配布のPDFファイルをご覧ください。

ボタン類について

・中断      DLを中断します
・再開      DLを再開します
・リスタート   現在作業中のURLの1ページ目からDLを再開します。最新Verでは未実行状態になり、再実行することでDLを行えます。このときオプションの再設定が可能です。
・ページを開く  作業中のページを開きます
・フォルダを開く 作業中のフォルダを開きます
・スキップ    現在DL中のURLをスキップし次のURLに移動します
・クリア     初期状態に戻します

保存名について

・適切にタグ付けがなされてるとは限らないので、カスタム名の変数が全て使えるとは限りません。

Wait値、Sleep値について

・Wait値はダウンロード後の待機時間で、Sleep値はダウンロード前に画像が表示されるまでの待機時間です。この値を低く設定するとアクセス遮断の恐れがあるのである程度は高い値を設定することをおすすめします。

レジューム(再開)オプションについて(有償版のみの機能)

エラーが起きたときのレジュームについてのオプションです。
基本的にデフォで良いです。

ただし影響度が高いのは、
(1) エラーレジューム設定:
ON推奨。これはエラーが起きたときのリトライ戦略を規定します。Seleniumフォールバックとは、リトライ上限に達した場合、「リトライ上限達成時の処理」オプションの前に、Seleniumが起動するかどうか規定できます。Seleniumとは実際にブラウザを動作させてるようにサイトにアクセスする方法であり、DL速度は目に見えて遅くなります。またこの機能を利用するにはChromeとドライバをインストールする必要があります(導入は自分でやることも可能ですが、私は自動化しました)このChromeとドライバのVerは一致していないと駄目とか結構シビアなところあり、うまく動作しない可能性あり。最新版ではSeleniumが起動する前にはリトライに成功してるのでこの機能自体ほとんど意味ないです。

(2)HTTPタイムアウト時間 :
タイムアウトエラーになるまでの時間です。デフォルトは30秒で、この時間を短くするとエラーになりやすくなりますが、回線の良いノードへの切替速度が早まるので、結果的にDL時間は短縮できるかもしれません。ノードBL機能との併用をおすすめします。

(3)403 Forbidden対策
画像へのダイレクトリンクは数時間で利用不可になるということを失念しており、そのときに発生するのが403エラーです
ただそれ以外でも403エラーは発生しないのかとか、403エラーを検出して実際に復帰できるか、あるいは実際にIP制限を食らったとき正しくIP制限であるかの判定がされるのかのデバッグを大してやってないので、IP制限の誤検知でダウンロードフローが止まる可能性あり。そのリスクを考えるならOFFの方が良いのかもしれませんが、一応、デフォルトではONにしてあります。

(4)H@Hノードブラックリスト
品位の低いノードをブラックリストに登録して、アクセスしないように制御します。ONを推奨しますが、例えば一つのノードしか存在しないケース。全てのノードがBLに入れられた場合の挙動に関してのデバッグが済んでない(というかそんなケースが実在するのか分からないが)のでリスクを考えてOFFをにしてあります。きちんと例外は意識してるので多分、問題ないとは思います。

想定される一括DLフロー(有償版のみの機能)

どう使うかはその人次第ですが、私の想定しているDLフローは以下の通りです。

1.一括DLしたい検索ワードを使って検索します。

取得したい検索結果ページ(↓)のURLをコピペしてください。タグやアップロード者の名前、Popular Wordとかでも機能します。

2.当アプリを起動して「検索結果からDLリストの作成」ボタンを押して検索結果パーサー起動します。


3.パーサーを操作して、解析を行います。

①「検索結果URL」入力フォーム:最初の工程で取得した「検索結果」のURLを入力してください。

②「ギャラリー取得数」:入力値を目標として探索します。実際のギャラリーより多い値を入力しても問題ないです。理論的には無限に取得できるはずですが、UIが重くなりすぎてアプリ落ちるかもしれません。

③「URL解析を実行」ボタン。検索結果URLを解析します。解析が行われると、↓のDBに解析結果がリアルタイムで反映されます。右上の中断・再開・クリアボタンで操作できます。

④「フィルタリング」ボタン:各項目に対して「ホワイトリスト」と「ブラックリスト」でフィルタリング可能です。もしも日本語のギャラリーだけ取得したい場合は以下のように入力すると上手くいくかもしれません(全てのギャラリーにタグ付けされてる訳ではないので万能ではありません)


4.解析結果からどのギャラリーをDLしたいのか選択します。

解析結果に対して、どのファイルをDLするかについて「✓」を入れます。「すべて✓」で、全項目を一括✓することが可能です。ちなみに、この段階からでもカテゴリ・評価・Upgraderに対して、DB内で右クリックすることで「除外・抽出」によるフィルタリングが可能です。


5.「解析結果を出力」か「マネージャー起動」ボタンを押します。

⑤解析結果を出力:DBの選んだURLを、メインウィンドウの「DLリスト」にそのまま出力します。後はメインウィンドウを操作してDLするだけです。

⑥DLマネージャー起動:後述

6.DLマネージャー操作について

※この種のファイルの取り扱いについて。発生したトラブルや損害について当方は如何なる責任も負いかねます。

⑥のボタンを押すと以下のウィンドウが立ち上がります。DB内で✓の入ったギャラリーの中から適切ファイルが存在するものだけがリストに自動的に追加され、後は「実行」ボタンを押すことでDLが始まります。

フィルタリングが複数存在する場合にどのファイルをDLするかを選択するものです。DL完了後に「DL完了したギャラリーに対応する検索結果パーサーのチェックを外す」を押すと、DBからTの名のつくファイルのDL済みのギャラリーを除外します。重複したファイルをDLしたくない場合にはどうぞ。

7.後はメインウィンドウで実行を押すだけ

うまくいくとこうなります。

あとがき


最後まで読んでくれてありがとうございます。もしよろしければチップでのご支援よろしくお願いします。🙇 

いいなと思ったら応援しよう!