4月 08 2008

[bash]連番のエロ画像を自動取得する

Posted by (っ´∀`)っ ゃー in やってみた, メモ, 珠玉のエロ画像
このエントリーをはてなブックマークに追加
はてなブックマーク - [bash]連番のエロ画像を自動取得する
Share on Facebook
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed
[bash]連番のエロ画像を自動取得する(っ´∀`)っ ゃー

男なら誰もが共感するテーマです。エロ画像を公開しているサイトはよくありますが、よくよく見てみると、公開しているディレクトリやファイル名が連番になっていることがあります。こうなったら誰かに全getさせて、後でゆっくり見てみたいと思うのは当然でしょう。

というわけで、珠玉のエロ画像を取得するスクリプトを書いてみました。エロ画像を公開しているサイトが「www.example.com」だとして、その中の「galleries/gall001」ディレクトリから「galleries/gall050」ディレクトリまでが公開されているとして、それぞれのディレクトリの中に、夢のjpgファイルが連番で001から099まであるとします。

今回、ディレクトリの数とファイルの数だけfor文をまわしますが、考え方としては、for文の中にfor文、つまり入れ子の状態にしてやってまわします。

そして、ディレクトリ名やファイル名の連番を生成するのに、seqコマンドのwオプションを利用して、ゼロパディングします。もっとも、これだけだと、たとえば0から99の場合、00~99というそろえ方をしてくれますが、000~099というそろえ方はしてくれないので、そこはsedをかましてやることで解決します。また、接頭語だけでなく接尾語を生成するのにもsedを使います。それでは、早速スクリプトを見てみましょう。

$ touch wget.sh
$ chmod 755 wget.sh
$ vi wget.sh
#!/bin/sh
# ディレクトリは001から050までとする
for DIR in `seq -w 1 50 | sed s/^/0/g`
do
# ディレクトリを作成する
mkdir $DIR
# ディレクトリに移動する
cd $DIR
# 001.jpgから099.jpgを取得する
for LIST in `seq -w 1 99 | sed s/^/0/g | sed s/$/.jpg/g`
do
wget http://www.example.com/galleries/gall$DIR/$LIST
done
# 必ず上位ディレクトリへ戻る
cd ../
done

以上です。