2006年声優言及数(1)まずはデータ収集

モチベーションはタイトルの通り。言及数をカウントするだけなら
http://d.hatena.ne.jp/keyworddiary/%bf%e5%bc%f9%c6%e0%a1%b9?date=20061218
の「含む日記」をカウントすればいいだけなんだけど、さすがに1年という長いスパンで、大勢の声優をカウントするのはサーバーが大変だろう。なので
http://d.hatena.ne.jp/keywordstats/%bf%e5%bc%f9%c6%e0%a1%b9?mode=graph&type=refcount&range=365&date=2006-12-18
の言及グラフを積分すればいいじゃん。
・・・というのは簡単だけど、グラフの画像処理ってどうすんだろ。画像処理は専門じゃないんだよなー。

グラフの画像フォーマットはPNGらしいので、どうにかlibpngでも勉強して解析できるようにするのが目標。

まず声優一覧ですが。
Category:日本の男性声優 - Wikipedia
http://ja.wikipedia.org/wiki/Category:%E6%97%A5%E6%9C%AC%E3%81%AE%E7%94%B7%E6%80%A7%E5%A3%B0%E5%84%AA
Category:日本の女性声優 - Wikipedia
http://ja.wikipedia.org/wiki/Category:%E6%97%A5%E6%9C%AC%E3%81%AE%E5%A5%B3%E6%80%A7%E5%A3%B0%E5%84%AA
を使おうかと。

リスト::声優とは - はてなダイアリー
http://d.hatena.ne.jp/keyword/%a5%ea%a5%b9%a5%c8%3a%3a%c0%bc%cd%a5
をそのまま使ってもいいんだけど、ここに登録されてないキーワードもあるし。福原香織とか。

リストができたら検索。キーワードをEUCに変換後URIエスケープして、http://search.hatena.ne.jp/keyword?word=の後ろにくっつける。結果が出たら<h3>でgrep。ヒットすればタイトルが出るし、ヒットしなければ

<h3><img src="/images/no_results.png"
alt="検索に一致する情報はありませんでした。"></h3>

こんなものが出る。これをチェックすればキーワードに登録されている/されてないが分かる。

まずはここまで実装して、存在するキーワードについて画像を取ってくる。

訂正

http://search.hatena.ne.jp/keyword?word=につけるのはやめ。部分文字列があるから。それだったらhttp://d.hatena.ne.jp/keyword/の後ろにつけて直接keywordとしてチェック。もしキーワードとして登録されていたら

<meta name="Description" content="水樹奈々 -  リスト::声優/ま行 1980年1月21日生まれ。愛媛県新居浜市出身。シグマ・セブン所属。 本名は近藤奈々。愛称は「奈々ちゃん」、「奈々さん」、「奈々っぺ」、「ヘッド」。...">

こんな記述があるはずなので、これをgrepする。もし登録されていなかったら

<p class="attention">
このキーワードはまだ登録されていません。
<form action="/keyword">
<input type="hidden" name="mode" value="edit">
<input type="hidden" name="word" value="氷樹奈々">
<input type="submit" value="「氷樹奈々」キーワードを作る">
</form>
</p>

こういう感じの出力になるようです。

確認

$ grep -l '<p class="attention">' * | wc -l
385
$ grep -l 'meta name="Description"' * | wc -l
486
$ expr 385 + 486
871
$ ls | wc -l
871
$ wc -l ../m_all
871 ../m_all

$ grep -l '<p class="attention">' * | wc -l
324
$ grep -l 'meta name="Description"' * | wc -l
735
$ expr 324 + 735
1059
$ ls | wc -l
1059
$ wc -l ../l_all
1059 ../l_all

OK。