はてなさんありがとう。WPさんこんにちは。
2012年2月19日
9年くらいはてダで日記を書いてたんですが、特に理由もないですがWordPressに移行。
で、そのとき書いたスクリプトを張っときます。
多分、もう使うことはないんですがw
参考程度にどうぞー。
※処理を上書きしてるので、事前にファイルはバックアップしといた方がいいですよw
#!/usr/bin/perl
use strict;
use warnings;
use Path::Class;
my $file = file('mt-export.txt');
my @line = $file->slurp;
my $time = 0;
for ( @line ) {
if ( $_ =~ /\d{2}:\d{2}:\d{2} [AP]M/ ) {
if ( $time >= 59 ) {
$time = 0;
}
my $t = sprintf('00:00:%02d',$time);
$_ =~ s/00:00:00 AM/$t/;
if ( $_ =~ s/(\d{2}):(\d{2}):(\d{2}) PM/$1:$2:$3/ ) {
my $hour = $1 + 12;
my $min = $3;
$_ =~ s/ $1:/ $hour:/;
my $t2 = sprintf('%02d',$time);
$_ =~ s/:$min\s+/:$t2\n/;
}
$_ =~ s/(\d{2}:\d{2}:\d{2}) AM/$1/;
$timer++;
}
$_ =~ s/^EMAIL:\s+$//;
$_ =~ s/^IP:\s+$//;
$_ =~ s/^URL:\s+$//;
}
my $fh = $file->open('w');
for ( @line ) {
print $fh $_;
}
$fh->close;
__END__
ポイントをいくつか説明しとくと、
DATEが00:00:00 PMとかになってるのはエラーになります。
で、これを解決する方法として、単純にPMを消せばいいんですが、それだと時間がずれるので、すべてのAM,PMを削除し、時を+12して24時間表記にしてます。
さらに、同じDATEの投稿が複数あるとうまくインポートできないみたいなので、秒を+1ずつして、時間をずらします。
コメントがうまく入らない原因は、EMAIL:、IP:、URL:がそれぞれ空白だったこと。空白の場合は、不要なので全部削除。