はてなさんありがとう。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:がそれぞれ空白だったこと。空白の場合は、不要なので全部削除。