見出し画像

E-Hentai Galleriesの画像ダウンローダーを作ったので配布します

前置き

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

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

更新履歴

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化してアップします😭


画像
Ver1.0 縦に長いね・・・


画像
追記7/17:Ver2.0です。


画像
追記10/23 Ver3.0です


📄 免責事項(Disclaimer)


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

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

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

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

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

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

DLリンク


↓ e-hentai downloader ver.3.11


使い方

作品の個別ページのURLをDLリストに貼ってください。
実行ボタンを押してDLスタートです。DL中でもDLリストにURLを追加することが可能です。

ボタン類について

・中断      DLを中断します
・再開      DLを再開します
・リスタート   現在作業中のURLの1ページ目からDLを再開します。オプションの再読み込みが発生します
・ページを開く  作業中のページを開きます
・フォルダを開く 作業中のフォルダを開きます
・スキップ    現在DL中のURLをスキップし次のURLに移動します
・クリア     初期状態に戻します

保存名について

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

Wait値、Sleep値について

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









制作雑記(備忘録風)

今回、開発ソフトはCursorで、AIモデルは主に

Gemini 2.0 flashと、2.0Pro-expを使いました。

このGemini 2.0 flashは無料かつ無制限に使えるのですが(2025/4/14現在)、初心者には本当に使いにくかったです。全然こちらの言うことを聞いてくれない。エラーやバグの修正がなされない。どんどん過去の内容を忘れる。

Cursorはデフォルトでは履歴を保存出来ないからソフト落とすことも出来ず、翌日に作業を引き継ぐ場合には、PCをスリープする日々。しかも出力されたコードにApplyボタンがなんか表示されないことが多く、ちまちまとコピペするか「完全なコードで出力してください」と無駄に長いコードの出力を要求する日々。そして出力は途中で停止する。(しかも改行にうるさいPythonのせいでコピペ作業すらままならない)

AIコーディングはもうエンジニアの皆様方には本当に素晴らしいツールだと思うのですよ。でも私のようにプログラム適正0の豚にとっては、真珠。

ダウンロードメソッド自体は初日で完成してました。
まあ正規表現を使って無理くりやってるだけなので、ちょっとでもHTMLの構成が変わっただけで破綻する程度のしょぼい内容なのですが(今後、使えなくなった場合に対応するかどうかは未定)、これはHTMLさえ理解してれば誰でも可能な作業です。

でも、これを自分で使うだけでなく配布しようと思ってしまったが運の尽き。

配布するならもう少しリッチな機能にしようかなと思って、企画書なんか作ることもなく、「この機能欲しいな」「やっぱりこういう仕様の方が良いかな」と、右往左往しながら、全ての機能を実装するのにおよそ一ヶ月かかりました。(3月末からAPIエラーが出て動かなくなったので作業中断してましたが)

もちろん毎日やってた訳じゃないですが、バックアップしたコードは軽く30越えてます。AIプログラミングって勝手にコードを省略したり、機能を省いたりしてくるのでバックアップが本当に欠かせなくて面堂です。

まあ部分的に作らせてそれを人力で統合するのが正しい使い方なんでしょうが、それが出来ない私のような無能&無課金でやると、この程度のアプリでもそれだけかかってしまいます。

ま人的に課金する前に一度苦労しておきたかったというのがあるのですが、意地を貼らないで、とっとと課金しておけばよかったというのが個人的感想です。まあ先月までは課金したところで⋯ってところはあったんですが。最新のGemini 2.5Proはかなり使えるようになったなという印象で、例えば2.0Proで絶対に解決できなかった問題を一発で解決してくれたこともあり、2.5Proを使うためなら課金するのは結構ありかなって思ってます。

今回、いろいろAIを試したところ、2.0flashは私と同レベルの初心者の方(HTML/CSS/Javascriptをちょっとだけ)には本当に最低限の利用、例えばたたき台の作成。あるいは作成方針を訪ねたり、コードを統合したり、修正案を提示させたり、そういう用途でしか勧められません。
これだけで作成するならそれなりのプログラミング知識が必要なのかと

Genimini 2.0Proは、2.0flashより長文出力が出来ていくらか賢い程度のもので、それほど際立った違いは感じなかったのかなと。2.0flashで解決しなかった問題をProに投げても解決されるということがありません。

ただ、gpt-4o-miniは別にプログラミングが得意という感じではないですが、gemini 2.0系列より際立ってGUI生成が得意だと感じました。今のGUIのベースはgpt-40-miniが作ったものです(最初は綺麗だったのですが、私が機能を追加する度に崩れた)

gemini 2.0系列はGUIの構文エラーでアプリが起動しないことがあるし、一度こうなったら、いくら修正してとお願いしても絶対に治りません。だからAIでこういうアプリを作るなら、GUI生成が得意かどうかってのが大事なのかなと。

まあPython開発において、pack、place、grid、とかそういう仕様を覚えて、「Gridで配置して」みたいな、そういう指示が出来るようになると幾らか、自分の思った通りのレスポンスを返してくれるようになるんじゃないのかなと思います。まあそのように仕様を覚えるのも大変ですから、例えば「今はどういう配置になってるのか。どういう配置にすれば自分の思う通りになるのか」という質問を投げかけるみたいな、フルスタックエンジニアリングではそういう回りくどい方法を取っても良いのかもしれません

で、個人的に無課金で触れた範囲でAIモデルでランク付けするなら、
Claude 3.5 sonnet>gemini 2.5 pro(今日ちょっと使っただけだが)>GPT-4o-mini(癖あるからあんまり開発に使いたい感じはしないが)>>>gemini-2.0 Pro>gemini 2.0 flash 
みたいな感じかなぁ。(個人の感想です)

ただ複数のAIモデルを使い分けるとコードがおかしくなったので、今回は初志貫徹でGeminiを中心に開発し、所々他のAIの力を借りるという感じでやってましたので、この比較自体はあんまり厳密ではないのです。でももしも課金するならClaude系を積極的に使いたいと感じました。

次作りたいアプリがあるなら課金して使う予定なので、そのとき使用感などをNoteで発信出来たらなとと思います。

まとめると、プログラミングの知識は現状は最低限でもあったほうが良いということ(さ来年あたりには最低限の知識すら要らなくなってる気もしますが・・・)、また企画書は大事であるということ。GUI開発はメインのコードとは別口で行ったほうが良いということ(作ってる内は楽しいが・・・)。時は金なり。課金してでも時短しましょうということ。
まあ得られた教訓はその辺かなと。



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

コメント

7
kou tsuki
kou tsuki

URLの「e-hentai.org/g/」の後の七桁の数字を保存ファイル名の一部にする(3640***-001、3640***-002...など)事は可能でしょうか?
{gid}(ギャラリーID)で試してみましたが違うようで…

ひびかん🐸
ひびかん🐸

ご連絡いただきありがとうございます。ご指摘の通りいくつかのカスタム変数が使えないことを確認しております。次のバージョンで修正予定なのでお待ち下さい。一応Ver.3.12の不安定版として、その部分を修正したものを暫定的に出しましたが、不安定版なのでエラー発生と同時におそらくDL止まります。それでも良ければ使ってください(後に削除します)。現在、自分はCloudflareにブロックされてしまったようなので、いつアプリ開発を再開できるか不明です。不安定版はとりあえず最低限は動作することを確認出来てたVerなのでとりあえず出しておきます。過度なアクセスには用心してください。

thorikawa
thorikawa

投げ銭しようとしたのですが寄付のページが、404です。
あと、圧縮後の削除でフォルダが残るバグ?の修正ほしいです。

ひびかん🐸
ひびかん🐸

圧縮後のフォルダが残るのはバグじゃないんです。すいません。「リサイズ画像をフォルダ直下に保存するオプション」「ダウンロード情報を保存フォルダ直下に保存するオプション」との兼ね合いから、こういう仕様になりました。最初はフラグ管理をしてフォルダを削除するか否かを判定していたのですが、フラグ管理が複雑になって保守性が悪化し、しかも「消してはいけないファイルを保存している既存のフォルダ」が「保存フォルダ」として指定されてるケースも想定されました。だからフォルダごと削除する仕様では、必要なファイルまで削除されてしまうということがあり得たので、今の仕様になりました。お手数ですが残った空のフォルダは手作業で削除してください。このアプリは大したアプリじゃないので、投げ銭はお気持ちだけで結構です。また次の記事でなんか払ってもやっても良いなと思ったらその時お願いします。

コメントするには、 ログイン または 会員登録 をお願いします。
買うたび 抽選 ※条件・上限あり \note クリエイター感謝祭ポイントバックキャンペーン/最大全額もどってくる! 12.1 月〜1.14 水 まで
E-Hentai Galleriesの画像ダウンローダーを作ったので配布します|ひびかん🐸
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1