Kindle用の画像zipを作ってくれるスクリプト。

2010年3月5日 スクリプト関連, 雑記

とりあえずで【1】のスクリプトを書いたんだけど、
いちいちファイル名を整えて・・・とかやるのが面倒くさくなってきちゃったので、新しく【2】に書き直した。
使い方は実行の時にディレクトリと対象機器(k2、kdx)を引数として付けて実行するだけ。
実行すると実際にファイルが処理されようがされまいが最終的に指定ディレクトリ内のファイルが全て削除されるので、万一使うような場合はその辺気をつけて使ってください。

【1】

#!/bin/bash
cd $1
p=`ls | wc -l`
c=1
for (( i = 0; i < $((p + 1)); i++ ))
{
  val=`printf “%03d” $c`
  val2=”p””$val”
  convert -resize 800×800 “$val””.jpg” “$val2″”.jpg”
  rm “$val””.jpg”
  c=$((c + 1))
}

【2】

#!/bin/bash
cd $1
#対象機器の解像度指定
##k2 — Kindle2
##kdx — Kindle DX
case “$2” in
  k2 ) rez=800 ;;
  kdx ) rez=1200 ;;
esac
#拡張子を配列に
ext=( jpg JPG jpeg JPEG gif GIF png PNG )
for (( i = 0; i < 8; i++ ))
{
  #画像ファイルのみのリスト生成
  ls | grep .${ext[i]} >>zlist.lst
}
#リスト行数取得
p=`wc -l <zlist.lst`
for (( i = 0; i < $((p + 1)); i++ ))
{
  case “$i” in
    0 ) ;;
    * )
      #ファイルサイズ変更後、元ファイル削除
      val=`printf “%03d” $i`
      flname[i]=`sed -n “$i”p zlist.lst`
      convert -resize “$rez”x”$rez” “${flname[i]}” p”$val”.jpg
      rm “${flname[i]}”
    ;;
  esac
}
bn=`basename $1`
zip ../”$bn”.zip *.*
rm *.*
cd ..
rmdir “$bn”

地味に説明が面倒くさいのでとりあえず流れだけ説明。
・実行すると変数rezに解像度の値を代入、配列変数extに画像の拡張子を代入。
・画像ファイルのみのリスト生成、リスト行数取得。
・ファイルサイズ変更、ファイル名を連番にしつつ元ファイルを削除。
・変数bnに現在のディレクトリ名を代入、一つ上のディレクトリに書庫を作成。
・ファイル、ディレクトリ削除。

と言う流れ。気が向いたらそのうち詳しく説明するかもしれないけども期待はしない方が良い。
例によって例のごとくインデントが全角です。

役に立ったならご褒美くらいくださってもよろしくってよ。
ホラこんな所にアマゾンのウィッシュリストが。

コメントは受け付けていません。