TOP      Linux版ダウンローダー      Linux版コンバーター      Solaris版      FreeBSD版      作者



■ 「ゲッター画像」 -スクリプト編-





「スクリプト編」は、私的なページです。

誰にでも使いこなせるものではなく、「個人メモ」的なのですが、なんとはなしにHP化してしまいました。





 ■ スクリプト版

 Windowsでなくとも使えるモノ、として、各種スクリプト版を用意しました。

 …何で“各種”にする必要があるのかですって?
  それは・・・・・、単に私がやってみたかっただけのことです。
  言語が違うだけで、どれも同じ動きをするものなのですが・・・。(^^;)


  Perl版へ    Ruby版へ    Python版へ





 ■ wgetコマンドの話 (正規表現含む)


 正規表現指定ですが、(ある程度までは)問題なしです。
 ドキュメントによると、wgetのAオプションは、あくまでも“拡張子”を指定するものではあります。
 が、何とはなしにファイルにも(ある程度までは)対応しているようです。

 wget -c -r -A haruka_igawa[0-1][0-9].jpg http://igawa1.netfirms.com/haruka_igawapage1.htm

 ワンライナーで、簡単にダウンロードが出来てしまいました。(^^;)

 ・・・・・尤も、ループ型のスクリプトにした方が、(巡回しない分だけ)ダウンロードにかかる時間を短縮する
    ことが出来る、とは言えます。


http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm

↑このサイトを使って、もう少し試してみました。
 中の画像に、ちょっとしたファイル名の例外があったので、「正規表現」の実験をするのに便利と思いました。

 例外というのは、

zhang_ziyi_mtv_movie_awards05-hq01-thumb.jpg
zhang_ziyi_mtv_movie_awards05-hq02-thumb.jpg
    ・
    ・
    ・
zhang_ziyi_mtv_movie_awards05-hq21-thumb.jpg

zhang_ziyi_mtv_movie_awards05-hq01.jpg
zhang_ziyi_mtv_movie_awards05-hq02.jpg
    ・
    ・
    ・
zhang_ziyi_mtv_movie_awards05-hq21.jpg

 などの系統だったファイル名が並ぶ中、他に「例外ファイル名」として

zhang_ziyi_mtv_movie_awards05-hq01a.jpg
zhang_ziyi_mtv_movie_awards05-hq02a-thumb.jpg
zhang_ziyi_mtv_movie_awards05-hq02a.jpg
zhang_ziyi_mtv_movie_awards05-hq12a

 の4ファイルが存在しているという・・・。


 これを「正規表現」を使ってダウンロード出来るか、試してみました。

@wget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9]a?\.jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →ダメ。

Awget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9]a?.jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →ダメ。

Bwget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9]a*.jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →
 zhang_ziyi_mtv_movie_awards05-hq01a.jpg
 zhang_ziyi_mtv_movie_awards05-hq02a-thumb.jpg
 zhang_ziyi_mtv_movie_awards05-hq02a.jpg
 zhang_ziyi_mtv_movie_awards05-hq12a
 …上記4ファイルのみ。

 …@からBまでトライしてみた結果判ったこと。

  「どうやらwgetでは、“*”・“+”・“?”といった“繰り返しのメタ文字”には対応していないらしい。」こと。
  “*”は繰り返しメタ文字ではなく、単にUNIXの「ワイルドカード」(0文字以上の文字)のもよう。 
  また、“?”も同様に“繰り返しのメタ文字”ではなく、「任意の1文字」の意味かと思われる。


Cwget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9].\.jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →ダメ。

Dwget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9]..jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →ダメ。

Ewget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9]*\.jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →(サムネイルも例外ファイルも含め)全てダウンロードされた。

Fwget -l 2 -r -A zhang_ziyi_mtv_movie_awards05-hq[01][0-9]*.jpg http://www.helloziyi.us/Galleries/mtv-movie-awards2005.htm
 →(サムネイルも例外ファイルも含め)全てダウンロードされた。

 …上記C〜Fより、“.”も「任意の1文字とのマッチング」ではなく、単に「ドット」であるということがほぼ確定的に。
  よって、エスケープシーケンスの必要なし。(使用しても問題はなさそう。)




・その他いくつか

[ダウンロード可能な正規表現]
wget -c -r -l 1 -A [0-9]*.jpg http://ziyiforever.primenova.com/pictures/2046/index.html
wget -c -r -l 1 -A [0-9][0-9][0-9].jpg http://ziyiforever.primenova.com/pictures/2046/index.html


[ダウンロード不可能な正規表現]
wget -c -r -l 1 -A [0-9]+.jpg http://ziyiforever.primenova.com/pictures/2046/index.html
wget -c -r -l 1 -A \d\d\d.jpg http://ziyiforever.primenova.com/pictures/2046/index.html
wget -c -r -l 1 -A ^00[0-9].jpg http://ziyiforever.primenova.com/pictures/2046/index.html





 シェルのループ版も作成しましたので、上げときます。


   incget.sh  ・・・・・ 2005.10.12  これもUTF-8版です。


 使い方は、

 ./incget.sh [URL] [頭の数字] [お尻の数字] ([ドット拡張子])

 です。
 「ドット拡張子」は省略が可能で、省略した場合は自動的に「.jpg」が適用されます。
 
 なお、“-w”オプションを指定した場合、「桁数」は「お尻の数字」の桁数に合わせる仕様です。
  例) 頭の数字が「1」で、お尻の数字が「10」のとき ・・・ 01,02,03,04,05,06,07,08,09,10
      頭の数字が「1」で、お尻の数字が「9」のとき ・・・ 1,2,3,4,5,6,7,8,9


[例1]

 http://itopix.jp/2003/saki_seto/  ・・・ ココを例にとります。
  …画像の実体は
   http://itopix.jp/2003/saki_seto/images/01.jpg
   http://itopix.jp/2003/saki_seto/images/02.jpg
   http://itopix.jp/2003/saki_seto/images/03.jpg

@「incget.sh」をダウンロード

Achmod +x incget.sh

B./incget.sh http://itopix.jp/2003/saki_seto/images/ 1 10 などと入力し、「ENTER」。

 … 1 10 のあと、.jpg を入れても良いです。(入れる場合、必ずドット付きで!)



C赤丸を付けたところをご覧ください。
 ここは、「1」を選ぶか「2」を選択するかの、問いかけをしています。

 とは言いましても意味が分からないかと思いますが(笑)、要はですね…。

 自然数を使うときは「1」(「ENTER」)を。
 「0埋めの桁数」を「お尻の数字」に合わせるときは「2」を選択します。

 先の例なら、

 ./incget.sh http://itopix.jp/2003/saki_seto/images/ 1 10

 ですから、「お尻の数字」は二桁ですね。

 なので、「2」(「ENTER」)を選択した場合、
   http://itopix.jp/2003/saki_seto/images/01.jpg
   http://itopix.jp/2003/saki_seto/images/02.jpg
   http://itopix.jp/2003/saki_seto/images/03.jpg
           ・
           ・
           ・
   http://itopix.jp/2003/saki_seto/images/10.jpg
 をダウンロードします。

 逆に、「1」(「ENTER」)を選択した場合は、自然数ですから、
   http://itopix.jp/2003/saki_seto/images/1.jpg
   http://itopix.jp/2003/saki_seto/images/2.jpg
   http://itopix.jp/2003/saki_seto/images/3.jpg
           ・
           ・
           ・
   http://itopix.jp/2003/saki_seto/images/10.jpg
 と、ダウンロードしていくことになります。

 上記サイトの場合、正しいのは・・・、そう。 「2」(「ENTER」)ですね。


 悪い例を示します。

 ./incget.sh http://itopix.jp/2003/saki_seto/images/ 1 3 .jpg

 本スクリプトの場合(他のやつは別ですよ!)、このやり方ではダウンロードできません。
 何故ならば、ファイル名の数字部分が「01」〜「03」であるからです。
 本スクリプトには「0埋めの桁数」指定がありませんので、代わりに「お尻の数字」で指定することになります。

 ./incget.sh http://itopix.jp/2003/saki_seto/images/ 1 10 としてやれば、

   http://itopix.jp/2003/saki_seto/images/01.jpg
   http://itopix.jp/2003/saki_seto/images/02.jpg
   http://itopix.jp/2003/saki_seto/images/03.jpg
    とダウンロードすることになりますし、

   http://itopix.jp/2003/saki_seto/images/04.jpg
    のところで、「Ctrl」+「c」などで中止されると良いです。




[例2]



http://ent.tom.com/xiezhen/yidongmeiguan/index.php

 このサイトの場合は、画像ファイルが自然数で1ずつインクリメントされていきますから、「1」(「ENTER」)
を選択することになりますね。

 逆に、「2」(「ENTER」)を選択すると、
 http://img.ent.tom.com/images/zhuanti/yidongmeiguan/d/100.jpg
 http://img.ent.tom.com/images/zhuanti/yidongmeiguan/d/101.jpg
の、2画像しかダウンロード出来ないことになります。


[ひとりごと]

 これやっていて思いましたが、「ゲッター画像G」で採用している「ドット拡張子」欄と「数字以降の文字
列」欄を分けるっていうの・・・、意味無かったですね。
 両方をまとめて「サフィックス」欄とでもして、例えば
./incget.sh http://itopix.jp/2003/saki_seto/images/ 1 10 picture.jpg などと入力すれば良いわけで…。
(↑このアドレスは実在しません。)

 尤も、「ドット拡張子」欄と「数字以降の文字列」欄を分けた方が、初心者ライクではありますけど。


 しかし・・・。
 PerlやRuby、Pythonで「ゲッター画像G」と同じ動きをするものを作ってきましたが、シェルは何と易しい
 のでしょう。 便利ですねぇ〜。 シェルは・・・。





 ☆Linux その他のディストリビューションでの動作確認

 1.Debian(Debian系代表…そう言えば、「KNOPPIX」で散々検証していましたっけ。)

 「Debian」でもそのまま使えます。

 「Debian」のKDE画面。



 Debianはデフォルトで「Ruby」がインストールされないようです…。
 それ以外は特に問題なし。


 2.Plamo(Slackware系代表)


 「Plamo」の「AfterStep」画面…。
 「AfterStep」とは、「NEXTSTEP」ライクな画面のことです。
 (「WindowMaker」もそうですけれど。)

 …それにしても、オタッキーなデスクトップ画面ですね。(笑)
 私の見るところ、「Linux」の中で最も個性派なのは、この「Plamo」ではないかと…。


 デフォルトで「Ruby」と「ImageMagick」がインストールされていないようでした。
 それ以外は問題なし。


 3.Suse


 「SUSE」は「RedHat」に次ぐシェアに、つけてきたようです。
 なので、試してみました。


 http://www.hicelebs.com/gallery/seto_saki/index.html
 です。

 実は私、「SUSE(スーゼ)」をまともに使ってみたのは今度が初めて。
 ちょっと動きが重い感じがしましたが、用途がクライアントなら、なかなかのお薦めです…。
 (デフォルトの壁紙が爬虫類系だったのには、ゲンナリしましたが…。)

 「SUSE」はデフォルトでやはり、「Ruby」が入っていませんでした。
 インストールは「YaST」から簡単に出来るのですが、ちょっとクセがあって、正統的にコマンドを
 叩かないと(「Ruby版」は)動作しません。
 それから、「ImageMagick」も「YaST」でインストールする必要があります。

 それ以外のスクリプトの動作には、まったく問題なし。



 ちなみに、「Suse」は「YaST」から簡単に「LVM」の設定をすることが出来るようです…。
 (私はまだ試していませんが。)





 「画像一括変換スクリプト」のページもお楽しみください。





 Perl版へ    Ruby版へ    Python版へ




このフリーソフトに関するご感想/ご質問は こちら までお送りください。           製作者ハンドルネーム Ikkyu(一求)

            


TOP      Linux版ダウンローダー      Linux版コンバーター      Solaris版      FreeBSD版      作者