マイブームのニコマスPリストに
ニコニコ大百科へのリンクを付けました。
どう見ても数十分で終わる内容なのですが、様々なハマりの末、ようやく完了。
しかも結果的には完了だけど手法的には敗北。
結局「百」を出すのに6時間もかかってしまった…死あるのみ。
最初はオーソドックスに大百科のAPIを調べて、バッチを組んだのですが、
記事の有無チェックに1秒/1タグほどかかったので、
もっと早い方法はないか…と思ってしまったのがハマりの始まり。
本家はどうやってるのかグーグル先生で調べたところ、
どうやらJavaScriptで毎回確認しているらしい。JSなので早速ファイルを取得。
中はクラス形式で書かれており、JSでは初めての体験に色々と難航したものの、
NicoPediaクラスが関連していることがわかり、
Newして結果をAlertで確認するところまではいけた…のですが。
Alertを外すとundefinedになるlol
これは忌まわしき記憶的に、同期が取れてない現象!?
早速調べてみると、やはりexecuteのところが非同期で書かれている。
それはまあいいのですが、これは終了状態はどうやって取得したらいいんだろう@@;
なんだかぱっと見みあたらない。
Javaだとリターンを明示的に取ると大体同期するのですが、その手も通用せず。
むしろ他で呼ばれているところを見ると、非同期処理の中でやりたいことをやるような感じ。
早速まねして実行してみるが、処理中から外の変数に値を格納できず苦戦。
インスタンス生成元の変数だけでなく、グローバル変数にすら格納できない。
このメソッドを拡張して引数増やせばいいのかもしれないけど、
JSでExtendってどうやればいいのだろうか。
しおしお…(気力)
もう寝てる間に終わればいいや、ということで、
最初に作ったバッチをEDENさんで動かしたところ、
1タグ1秒でトータル数時間かかるはずの処理が、5分ほどで終了する(爆
ああ、もしかして、テストしたときは、混雑してただけだったのかもしれない、ね。
…寝るか。