星期六, 六月 10, 2006

整理我在cnblog上的日志文件的脚本


#!d:/apps/perl/bin/perl
#
# 整理我在cnblog上的日志文件的脚本。
# 下载这些使用的是wget,按照catalog_2006.html这样每年的文件列表进行二级深度
# 镜像,就可以得到所有的文件爱女了。然后按照标题整理一下即刻。
#
# 需要在这个目录下建立一个blogs的目录存放生成的文件。

open(BLOGS, "dir *.html /b|") || die("$!");
while(<BLOGS>){
if (not /^[0-9]+\.html/) {
next
}
crab_blog($_);
}
close(BLOGS);


sub crab_blog{
my $filename = shift;
my ($title, $content);

open(FILE, "$filename") || die("blog open $!");

my($begin_content) = 0;
while(<FILE>){
if (/<title>(.*)<\/title>/) {
$title = $1;
next;
}
if (/<div class=\"entity\">/) {
$begin_content = 1;
next;
}
if (/<p class=\"diaryFoot\">/) {
$begin_content = 0;
last;
}
if ($begin_content){
$content .= $_;
}
}
close(FILE);

$title =~ s/--叶泉-自由随笔//;

$filename = $title;
$filename =~ s/\\\/\*\.<>\?/_/g;
open(FILE, ">blogs/$filename.html") || die("blog write $!");
print FILE <<EOPF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>$title</title>
</head>
<body>
EOPF
;
print FILE $content;
print FILE <<EOPF;
</body>
</html>
EOPF
;
close(FILE);
};

没有评论: