#!/usr/bin/perl -w use strict; ## Author: itouh ## Time-stamp: if($#ARGV > 1){ print "usage: perl mkblog.pl < blog.txt > index.html\n"; exit(1); } # 実行 mainfunc(); exit(0); # 実行終わり sub mainfunc { my ($latest, $past, %msg) = analyzeData(); putheader($latest, $past); putbody(%msg); putfooter(); } # データ解析 sub analyzeData { my $time = "20000101-xxxx"; my $latest = ""; my $past = ""; my %msg = (); while(<>){ chomp(); if(/^[ \t\r\n]*$/){ # 空白行の場合、何もしない }elsif(/^\#/){ # コメント行も何もしない }elsif(/^(2[0-9]{3})-([0-9]*)-([0-9]{2})/){ # 日付を得る my ($y, $m, $d) = ($1, $2, $3); $time = sprintf("%04d%02d%02d-xxxx",$y,$m,$d); $latest = substr($time,0,8); # 画像の HTML を作成 my $dcameratime = substr($time,2,6); my @img = `ls $dcameratime*jpg 2>/dev/null`; foreach my $i (@img){ $i =~ /\_([0-9]{4})\~/; my ($hm) = $1; $msg{"$latest-$hm"} .= `imgsz -e -2 $i`; } }elsif(/^\-([0-9]{4})/){ #時刻を得る my $hm = $1; #hour minute $time =~ s/\-[0-9x]*$/-$hm/; }elsif(/^past:(.*)$/){ $past = $1; }else{ $msg{$time."msg"} .= "

$_

\n"; } } # foreach (sort keys %msg){ print $_." ".$msg{$_}."\n";} return $latest, $past, %msg; } # HTML ボディ sub putbody { my %msg = (@_); my $lastday = ""; my $lasthour = ""; my $reservmsg = ""; foreach my $t (sort keys(%msg)){ my $day = substr($t,0,8); my $hour = substr($t,9,4); # print "$day-$hour ". $msg{$t}."\n"; if($day ne $lastday){ if($reservmsg){ print $reservmsg; $reservmsg = "";} # 日付表示 print qq|\n

| . substr($day,0,4)."-".substr($day,4,2)."-".substr($day,6,2).qq|

\n|; $lastday = $day; $lasthour = ""; } if($msg{$t} =~ /^

%s:%s\n", substr($hour,0,2),substr($hour,2,2)); $lasthour = $hour; $reservmsg .= $msg{$t}; }else{ # メッセージ・画像表示 # print "($day-$hour) ".$msg{$t}."\n"; print $msg{$t}; } } #foreach.. if($reservmsg){ print $reservmsg; $reservmsg = "";} } # HTML あたま sub putheader{ my ($latest, $past) = @_; print qq| itouh: ケータイ写真日記

|; my ($d, $m, $y) = (localtime())[3..5]; $y += 1900; $m++; printf("Last Update: %04d-%d-%02d\n",$y,$m,$d); print qq|

itouh ケータイ写真日記

最新 |; foreach my $d (split(' ',$past)){ print qq|$d\n|; } } sub putfooter { print qq|
itouh |; } #end of file