/ / WinChalow

交通量調査-Windows版[perl]

2005-02-07

Windowsでも動くように HTTP::Lite::Fetch を使ってみた。
http://digit.que.ne.jp/work/index.cgi?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FHTTP%3A%3ALite%3A%3AFetch

ppm.bat でHTTP::Liteをインストールしておく必要がある。Date-Calcも忘れずに。

C:\> ppm.bat
ppm> install HTTP-Lite
ppm> install Date-Calc
ppm> quit

HTTP::Lite::Fetchはインスコ・セットがついてないので、自力で展開し、C:\Perl\site\lib 以下にコピーする。

URI::FetchをHTTP::Lite::Fetchに差し替えたものが次のスクリプトだ。こちらだとCacheモジュールはいらない。さらに簡単になったし、Windowsでも動く。

もうユーザー・エージェントの定義なんかやってる時代じゃないのだった...
#! C:/Perl/bin/perl

use strict;
use HTTP::Lite::Fetch;
use Date::Calc qw(Today_and_Now Add_Delta_DHMS Day_of_Week);

# 首都高の空いている曜日と時間帯をさがす
my $uri = 'http://www.jartic.or.jp/traffic/highway/kousoku/rhp0001.jpeg';
# キャッシュの置き場
my $cache = './kousoku.cache';

my $res = HTTP::Lite::Fetch->fetch($uri, Cache => $cache)
or die HTTP::Lite::Fetch->errstr;
my $jpg = $res->body;
my @now = Add_Delta_DHMS(Today_and_Now(),0,0,-10,0); # タイムラグが10分くらいあるようだ...
my $file = sprintf("%04d%02d%02d_%02d%02d", @now) . '.jpg';
my $dow = Day_of_Week($now[0],$now[1],$now[2]);

# ファイルは、var/曜日番号/以下におく 月曜=1, 火曜=2, .. .. .. 日曜=0
# ディレクトリはあらかじめ作っておく。
open F, ">../var/$dow/$file";
binmode F;
print F $jpg;
__END__

permlink