MTOS導入日誌 2009年12月16日(番外編Mail-entry)

MT用メール投稿プログラムのmail-entry(Ver.0.6.3a)で、添付ファイルの保存先を
[保存先パス]/年(4桁)/月(2桁)/日(2桁)
となるようにいじってみました。
このEntryはメールから投稿して、ちゃんと動くかためしてみます。
先日のアメブロからインポートしたBLOGですが、imageアイテムのアップロード先は
<blogパス>/images/2009/01/01/****.jpg
のように、imagesフォルダを作って、
その下にさらに 年(4桁)/月/日フォルダを作って、その下にいれてました。
ところが、mail-entryでは
[保存先パス]/09/01****.jpg
のように、年(2桁)/月(2桁)
のフォルダを作ってその下に保存されます。
また、mail-entryでは、添付ファイルのアイテム登録はされないので、後からAsset-Handlerプラグインを使って登録しています。
このままだと、一ヶ月間は同じフォルダに追加されていくので、Asset Handlerプラグインでアイテム登録する際にディレクトリ内をまとめて登録すると前に登録したものがダブって登録されてしまいます。
せめて1日単位であればファイル数も限られるので多少は手間が減りそうです。
また、2009 と 09 とフォルダが分れてしまっているのも気持ち悪いものです。
同じような機能を持ったプラグインmooberやMovaMotionも試してみたのですが、イマイチうまく動きませんでした。
このため、mail-entry(Ver.0.6.3a)をいじって年(4桁)/月/日のフォルダに添付ファイルを出力するようにいじってみました。
いじったところは2か所
- 添付ファイルの出力先を決めているところ
- 出力先フォルダがあるかどうか調べて、なかったらフォルダを作るところ。
です。
まずはファイルの出力先を決めているところ
元のプログラム(208行目あたり)
# image_dirとimgpathに/年/月を加える
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$year = substr $year, 1, 2;
$mon = sprintf("%02d", $mon + 1);
$image_dir .= "/$year/$mon";
$imgpath .= "/$year/$mon"; # URL
いじったプログラム
# image_dirとimgpathに/年/月を加える
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
$year = sprintf("%04d",$year+1900); #←年を4桁に
$mon = sprintf("%02d", $mon + 1); #←元のまま
$mday = sprintf("%02d", $mday); #←日付を2桁で
$image_dir .= "/$year/$mon/$mday"; #←最後に日(/$mday)を追加
$imgpath .= "/$year/$mon/$mday"; # URL ←最後に日(/$mday)を追加
次にフォルダの有無を調べてなければ作るところ
元のプログラム(297行目あたり)
# イメージ格納ディレクトリ/年/月がなければ作成する
unless (-e $outputdir) {
my $dir = $outputdir;
$dir =‾ s/(¥/[01-9][01-9])$//;
unless (-e $dir) {
mkdir $dir, 0777 or &err_output($dir . "を作れませんでした");
# mkdirで0777が出来ないようなので改めて
chmod 0777, $dir;
}
mkdir $outputdir, 0777 or &err_output($outputdir . "のパーミッションを変更できませんでした");
chmod 0777, $outputdir;
}
いじったプログラム
# イメージ格納ディレクトリ/年/月がなければ作成する
unless (-e $outputdir) { #$outputdirがなければ
my $dir = $outputdir;
$dir =‾ s/(¥/[01-9][01-9]¥/[01-9][01-9])$//; #$dir ←/月/日を除いた年までのパス
unless (-e $dir) { # $dirがなければ
mkdir $dir, 0777 or &err_output($dir . "(年)を作れませんでした");
# mkdirで0777が出来ないようなので改めて
chmod 0777, $dir;
}
my $dirm = $outputdir;
$dirm =‾ s/(¥/[01-9][01-9])$//; # $dirm←/日を除いた月までのパス
unless (-e $dirm) { # $dirm がなければ
mkdir $dirm, 0777 or &err_output($dirm . "(月)を作れませんでした");
# mkdirで0777が出来ないようなので改めて
chmod 0777, $dirm;
}
mkdir $outputdir, 0777 or &err_output($outputdir . "(日)を作れませんでした;
chmod 0777, $outputdir;
}
ひとまずはここまで。
できれば、アイテム登録までするようにできるといいんですけど、アイテム登録のしくみも分からない現状では無理っぽいので検討課題です。

レスポンス
コメントする
Trackback URL