#!/usr/bin/perl
#
# image_rename_mgp.pl - Magic Point により作成された
#			画像ファイルのリネームスクリプト
#
# Morikawa Yasuhiro <morikawa@ep.sci.hokudai.ac.jp> 2003/03/31
#
# ・ 概要
#
#    Magic Point で作成される
#    mgp00001.jpg, mgp00002.jpg 〜 mgp00020.jpg といった画像ファイルを
#    001.jpg, 002.jpg 〜 231.jpg という風にリネームするスクリプト
#
# ・ 使用法
#
#    画像のあるディレクトリ内で以下のコマンドを使用する.
#
#      $ image_rename_mgp.pl
#
#

########################################################
##  デフォルト設定値
########################################################

# 桁数
$len = 3;

# 処理する画像ファイルの形式
@treat = ('gif', 'GIF', 'jpg', 'JPG', 'jpeg', 'JPEG', 'png', 'PNG',
	  'bmp', 'BMP', 'tif', 'TIF', 'tiff', 'TIFF');

########################################################

# カレントディレクトリ内の".", ".."を除く全てのファイルを取得
opendir(DIR, ".");
@allfiles = grep(!/^\.\.?$/, readdir(DIR));
closedir(DIR);

########################################################
##   画像ファイルでなかったり,
##   数字のファイル名でないものを除去
########################################################

foreach $file (@allfiles){
    @file_parts = split(/\./, $file);
    #print STDOUT "file name is $file_parts[0], expand is $file_parts[$#file_parts] \n";
    #
    #  mgp000**.gif などといったファイル名以外のものがある場合に
    #  エラーを返す
    #
    unless ($file_parts[0] =~ /^mgp\d+$/){
	die "このディレクトリには mgp000**.gif のような名前でないファイルが含まれており, 処理を実行できませんでした. \n";
    }
    #
    #  @treat に含まれていない拡張子の場合はエラーを返す.
    #
    undef $img_ok;
    foreach $imgtype (@treat){
	if ($file_parts[$#file_parts] eq $imgtype){
	    $img_ok = 1;
	}
    }
    unless ($img_ok){
	die "このディレクトリには, このスクリプトではサポートしていない画像形式のファイルが存在するため, 処理を実行できませんでした. \n";
    }
}

######################################################
##  ファイル名をリネーム
######################################################

foreach $file (@allfiles){
    @file_parts = split(/\./, $file);
    $filename = $file_parts[0];
    $filename =~ s/mgp//gi;
    $imgtype = $file_parts[$#file_parts];
    #
    # ファイルのナンバーを規定の桁数にする
    #
    $new_filename = sprintf('%.' . $len . 'd', $filename);

    #print STDOUT $new_filename;

    #
    # 拡張子を小文字にする
    #
    $new_imgtype = $imgtype;
    $new_imgtype =~ tr/A-Z/a-z/;

    #print STDOUT $new_imgtype;

    rename("$file", "$new_filename\.$new_imgtype");

    print STDOUT "$file -> $new_filename\.$new_imgtype\n";
}

print STDOUT "処理は正常に終了しました. \n";

exit 0;
