WHOによる,COVID-19における世界各国地域別の感染者・死者数日別データをjson形式で取り込んでいたが,形式が変わったのか読み込めなくなってしまった。jsonの形を再び分析する気にならなかったので,探してみるとWHO Coronavirus (COVID-19) DashboardにCSVデータが見つかった。
データ形式をころころ変えるのはやめてほしい。これが日本だと,URLごとデータが消えてしまうので,それよりはましかもしれない。これまでのコードを生かしながら,修正プログラムを作った。
#!/usr/bin/perl# 02/10/2022 K. Koshigiri
# usage: covid.pl 2022/02/22 3
# extract 3 days' data from 2022/02/22
# original data = https://covid19.who.int/page-data/table/page-data.json
# data https://covid19.who.int/WHO-COVID-19-global-data.csv
use Time::Local 'timelocal';
$in = "whox";
$out = "who-dat.csv";
$cvd = "https://covid19.who.int/WHO-COVID-19-global-data.csv";
($sec, $min, $hour) = (0,0,0);
($year, $month, $day) = split '/', $ARGV[0];
$epochtime = timelocal($sec, $min, $hour, $day, $month-1, $year-1900)+32400;
system("lynx -source $cvd > $in");
open(OUT,">$out");
print OUT "Date, Country Code, Country, Region Code, Confirmed, Cumulative Confirmed, Deaths, Cumulative Deaths \n";
for ($i=0; $i<$ARGV[1]; $i++) {
$ut=$epochtime+86400*$i;
{$sec, $min, $hour, $day, $month, $year) = gmtime($ut);
$year += 1900;
$month += 1;
if($month < 10) {
$ym = "$year-0$month";
} else {
$ym = "$year-$month";
}
if($day < 10) {
$dt = "$ym-0$day";
} else {
$dt = "$ym-$day";
}
print "$dt\n";
open(IN, "<$in");
while() {
print OUT;
}
}
close(IN);
}
close(OUT);
0 件のコメント:
コメントを投稿