しゃある通信

#30-04 [hack]更新グラフ
RSSTIMESは外部サーバなので、自前で生成する ようにしたのがこれ↓

                                                                        

スクリプトはこんな感じ↓

#!/usr/local/bin/perl

# make timebar

@fname = <*.html>;

$now = time;
$expire = 86400 * 30;
$scale = 3;

@bar = split(//, "0" x (24 * $scale));

for $file (@fname) {
    open(FD, $file);
    while (<FD>) {
        if (m|^<strong>#\d\d-\d\d <a name="\d\d-\d\d" href="#\d\d-\d\d" title="(\d+)"|io) {
            $time = $1;
            if ($time >= $now - $expire) {
                (undef, $min, $hour) = localtime($time);
                $bar[$hour * $scale + int($min / (60 / $scale))]++;
            }
        }
    }
    close(FD);
}

foreach $i (0..$#bar) {
    $color = 7 if (($color = $bar[$i]) > 7);
    $bar[$i] = sprintf("<span class=\"c%d\" title=\"%02d:%02d-%d\">&#160;</span>",
                       $color, int($i / $scale), int(($i % $scale) * 60 / $scale), $bar[$i]);
}

$timebar = join("", @bar);

print $timebar;
要するに更新時刻一覧拾ってきて処理してるだけですね。RSSに残っている情報だけだと少なすぎるので ある程度蓄積しておかないとスカスカになっちゃいますが。$scaleで横の倍率が指定できる ので、適当な大きさにしておけばいいかと。

CSSで色つけてます。グラデをあんまり細かくすると認識できなくなるのでかなり大雑把です。

cronで実行するようにしてincludeで取り込むのがいいんではないかと。気がついたら真っ黒になったり するので気が抜けません :D



マクロミルへ登録

© 2004 Kazuya 'Sharl' Masuda
(C)Willoo Entertainment Inc. (C)Konami Digital Entertainment 株式会社ウィローエンターテイメント及び株式会社コナミデジタルエンタテインメントの著作権を侵害する行為は禁止されています。 0.005259 cached