最近1日1ニコのエントリが正しく表示されていないことが多かったのですが、原因が判明したので修正しました。
不具合状況
本来動画プレイヤーが表示されるべきところで、<iframe width=”312″ height=”176″ src=”http://ext.nicovideo.jp/thumb/sm12822237″ scrolling=”no” style=”border:solid 1px #CCC;” frameborder=”0″><a href=”http://www.nicovideo.jp/watch/sm12822237″>冬に食べたい料理30品作ってみた【前編】</a></iframe>といった感じの文字列が表示されてしまっていた。
原因
はてなダイアリーのAtomAPI(AtomPub)で、ニコニコ動画のレンダリングが正しく行われないことがあるため。またその正しくレンダリングが行われなかった結果を、正しくレンダリングされたかチェックすることなくDB格納していたため。レンダリングが正しくされないのはこの問題と同じ。
はてなアイデア – ニコニコ動画のブログパーツ(iframe)を貼り付けるとレンダリングが正しくされずコードが表示されてしまう(http://f.hatena.ne.jp/nobodyplace/20101124095939)。特に初回アクセス時、混雑時に多い。
AtomAPIでも発生していると言うこと。
対策
悪くても3回に1回は正しくレンダリングされるようなので、レンダリングをチェックした上で正しくない場合には負担にならないであろう一定回数まで繰り返し取得するようにし、最後まで正しく取得できない場合には例外を投げて終了するように変更。負荷が大変なのは分かるけど、もうちょっとなんとかしてくれないかなぁ。
てかまぁ、はてなダイアリーの内容をブログに転載してるヤツなんかいないと思うから、この件自体はそんなに共感を得られないだろうけども、それにしたってもうちょっとなんか。