#!/usr/bin/perl use lib qw (./lib ./extlib); use MT; use MT::App::CMS; use MT::Blog; use MT::Entry; use MT::Comment; use MT::TBPing; use MT::Trackback; use FileHandle; use Jcode; $| = 1; my $cfg_file = "./mt.cfg"; my $mt_path = "./"; my $app = MT::App::CMS->new( Config => $mt_path . $cfg_file, Directory => $mt_path, ); my $mt = MT->new( Config => $mt_path . $cfg_file, Directory => $mt_path, ); my %month = ( 'January' => '01', 'February' => '02', 'March' => '03', 'April' => '04', 'May' => '05', 'June' => '06', 'July' => '07', 'August' => '08', 'September' => '09', 'October' => '10', 'November' => '11', 'December' => '12', ); my $blog_id = 1; my $author_id = 1; my $blog_id = 1; my $blog = MT::Blog->load($blog_id); while ($file = shift) { # HTML読み込み $html = do {local $/; my $fh = FileHandle->new($file); <$fh>}; # パース開始 next unless ($file =~ /(\d\d\d\d\d\d).html/); my $entry_id = int($1); print "$file\nID: $entry_id\n"; # エントリー情報 $html =~ /
|<\/p>\n|
\n)/\n/gs;
$body =~ /^\n(.*)\n\n<\/a>\n(.*)\n$/s;
my ($text, $text_more) = ($1, $2);
# エントリー生成
my $entry = MT::Entry->new;
$entry->blog_id($blog_id);
$entry->title($title);
$entry->text($text);
$entry->text_more($text_more);
$entry->author_id($author_id);
$entry->created_on($created_on);
$entry->id($entry_id);
$entry->convert_breaks(1);
$entry->allow_comments(1);
$entry->allow_pings(1);
$entry->status(MT::Entry::RELEASE());
$entry->save or die $entry->errstr;
# Trackback情報
@trackbacks = ($html =~ /
\nWeblog:<\/b> (.*?)
\nTracked:<\/b> (.*?)<\/span>/s;
my ($source_url, $title, $excerpt, $blog_name, $date)
= ($1, $2, $3, $4, $5);
$date =~ /^(\w*?) (.\d), (\d\d\d\d) (\d\d):(\d\d)/;
my $created_on = $3.$month{$1}.sprintf("%02d", $2).$4.$5."00";
$title =~ s/<.*?>//sg;
$excerpt =~ s/<.*?>//sg;
# Trackback生成
my $ping = MT::TBPing->new;
$ping->blog_id($blog_id);
$ping->tb_id((MT::Trackback->load({ entry_id => $entry_id }))->id);
$ping->source_url($source_url);
$ping->ip('255.255.255.255');
$ping->excerpt($excerpt);
$ping->title($title);
$ping->blog_name($blog_name);
$ping->created_on($created_on);
$ping->save or die $ping->errstr;
}
# Comment情報
@comments = ($html =~ /(.*?<\/div>)/gs);
foreach $comment (@comments) {
$comment =~ /name: (.*?)\ndate: (\d\d\d\d)\/(\d\d)\/(\d\d) (\d\d):(\d\d)/s;
my $author = $1;
my $created_on = "$2$3$4$5$6"."00";
my $email = "";
my $url = "";
if ($author =~ //) {
$email = $1;
$email =~ s/(\w\w);/chr($1)/ge;
} elsif ($author =~ //) {
$url = $1;
$url =~ s/(\w\w);/chr($1)/ge;
}
$author =~ s/<.*?>//sg;
$author =~ s/^ななしさん$//;
$comment =~ /
|<\/p>\n|
\n)/\n/gs; $text =~ s/<.*?>//g; $text =~ s/>/>/g; $text =~ s/^\n//; $text =~ s/\n$//; # Comment生成 my $comment = MT::Comment->new; $comment->ip('255.255.255.255'); $comment->blog_id($blog_id); $comment->entry_id($entry_id); $comment->author($author); $comment->email($email); $comment->url($url); $comment->text($text); $comment->created_on($created_on); $comment->visible(1); $comment->save or die $comment->errstr; } } $blog->touch; $blog->save;