モチベーションはタイトルの通り。言及数をカウントするだけなら
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。