前回、icrawlerを使って画像を自動的にダウンロードするプログラムを作りました。今回はそれをGUI化したので紹介したいと思います。

前回の記事はこちら。

今回の記事のプログラムを実行した様子はこちらです。

準備

前回同様、icrawlerというモジュールを使います。

https://icrawler.readthedocs.io/en/latest/builtin.html#search-engine-crawlers

以下のコマンドでインストールしてください。

プログラムの内容

ソースコードはこちら。

ついでにpyinstallerで実行ファイルにもしました。必要な方はこちらからどうぞ。

プログラムの説明

それでは簡単に内容を説明していきます。

tkinterのFrameを継承したImageDownloaderというクラスを作成しています。
コンストラクタでキーワードを入力するエディットボックス(Entry)、ダウンロードを実行するボタン、ダウンロードする画像の最大数とサイズを選択するコンボボックスなどを作成しています。

ダウンロードを実行するボタンを押すとStartDownload関数が実行され、キーワードとダウンロードの最大数、画像サイズを指定してBingImageCrawlercrawl 関数を呼び出しています。

画像サイズとしては「小」、「中」、「大」、「特大」、「指定なし」があり、小は(100px, 100px)~(700px, 700px)の画像、中は(700px, 700px)~(1400px, 1000px)の画像、大は(1200px, 700px)~(1600px, 1200px)の画像、特大は(1400px, 1000px)~(4000px, 2000px)の画像を探すようにしています。このあたりの区分は適当です。

サイズを指定した場合、「最大ダウンロード数」に対して実際にダウンロードされる画像の数はかなり少なくなってしまいました。サイズの指定の仕方が悪いのでしょうか?(ごめんなさい。よく分かりません)

画像サイズを「指定なし」にすると「最大ダウンロード数」に近い数の画像がダウンロードされます。数が必要な場合は画像サイズに「指定なし」を選んでください。

さいごに

今回は画像をダウンロードするプログラムをGUI化して手軽に使えるようにしてみました。誰かのお役に立てば幸いです。