2009年声優言及数 作業メモ(4) 言及数グラフデータを取得

去年の作業を参考にしつつ。
2008年声優言及数 作業メモ(2) 言及数グラフデータを取得 - XXXannex
前に書いた通り、キーワードのエンコーディング方式を指定できるので、その辺はちょっと楽になってるかも。まあ、コーディング上は大して変わってないけど・・・。統一したエンコーディングで作業できる、ってのは結構楽なものなのです。

use strict;
use warnings;
use FindBin;
use lib "$FindBin::RealBin/../lib";
use EEncode;

# $end must be YYYY-MM-DD
# e.g. http://d.hatena.ne.jp/keywordstats/%b9%e2%b3%c0%ba%cc%cd%db?mode=graph&type=refcount&date=2008-12-25&range=400

my $end   = shift; ## e.g. 2008-12-25
my $range = shift; ## e.g. 400
my $list  = shift;

open my $fh, '<', $list or die("open $list failed");
while(<$fh>){
  tr/\x0A\x0D//d;
  my $ky = (split(/\t/))[0];
  my $escaped_name = convert_s2e($ky);
  print "wget -O ${escaped_name}_${end}_${range}.png 'http://d.hatena.ne.jp/keywordstats/$escaped_name?ie=utf8&mode=graph&type=refcount&date=$end&range=$range'; sleep 1;\n";
}
close $fh;

で、サイズ0のファイルは削除します。

$ find ./ -size 0 -type f | xargs rm
$ ls | wc -l
1081

去年より結構増えてるなあ・・・。

そうか、去年のデータも取ってこなきゃなんだ。

というわけで、昔のログを取得してみた

去年のログでも書いたけど、「情報を取得できません」という画像が表示されることがある。
2008年声優言及数 作業メモ(3) 言及数グラフデータを集計 - XXXannex
wgetのログをみると、200、302、404の場合があって

$ grep ^HTTP wget.log | sort | uniq -c
   1081 HTTP request sent, awaiting response... 200 OK
     95 HTTP request sent, awaiting response... 302 Moved
    972 HTTP request sent, awaiting response... 404 Not Found
  • 200:キーワードあり
  • 302:キーワードはあるが、「情報を取得できません」状態
  • 404:キーワードなし

という具合になるようです。

キーワード「五行なずな」の編集ページから、作成日は2009/09/03のようです。したがって、2008年1月〜12月のデータを取ってこようとすると302で http://d.hatena.ne.jp/images/graph.png に飛ばされてしまいます。

+ wget -O %E4%BA%94%E8%A1%8C%E3%81%AA%E3%81%9A%E3%81%AA_2008-12-31_365.png 'http://d.hatena.ne.jp/keywordstats/%E4%BA%94%E8%A1%8C%E3%81%AA%E3%81%9A%E3%81%AA?ie=utf8&mode=graph&type=refcount&date=2008-12-31&range=365'
--2010-01-04 23:19:07--  http://d.hatena.ne.jp/keywordstats/%E4%BA%94%E8%A1%8C%E3%81%AA%E3%81%9A%E3%81%AA?ie=utf8&mode=graph&type=refcount&date=2008-12-31&range=365
Resolving d.hatena.ne.jp... 59.106.108.77
Connecting to d.hatena.ne.jp|59.106.108.77|:80... connected.
HTTP request sent, awaiting response... 302 Moved
Location: /images/graph.png [following]
--2010-01-04 23:19:07--  http://d.hatena.ne.jp/images/graph.png
Connecting to d.hatena.ne.jp|59.106.108.77|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2187 (2.1K) [image/png]
Saving to: `%E4%BA%94%E8%A1%8C%E3%81%AA%E3%81%9A%E3%81%AA_2008-12-31_365.png'

     0K ..                                                    100% 19.8M=0s

2010-01-04 23:19:07 (19.8 MB/s) - `%E4%BA%94%E8%A1%8C%E3%81%AA%E3%81%9A%E3%81%AA_2008-12-31_365.png' saved [2187/2187]

そんなに新人でもないと思うんですけどね。疎い俺が言えることではないですが。

とりあえず、やっつけ的ですがこんな感じで消しておく。

$ ls | while read f; do
  pngcheck -pv $f | grep 'PLTE chunk: 4 palette entries' > /dev/null
  if [ $? -eq 0 ]; then
    echo $f
  fi
done | xargs rm