ニコ動のMovieをJavaで保存

1つ前の記事でニコ動にAPIを発行するとかなんとかの記事を書いたけれど、ひとまず動画タイトルの名前でMovieファイルを保存するサンプルは作成完了。

snapshot20140707_model

Modelはだいたいこんな感じ。ここに書いている名前は適当。

Controllerを起点にして各種処理を行うイメージ。緑色は主にネットワークがらみの部分。apache HttpClient使って楽してます。

取得したデータがxmlのだった場合はマッピングする必要があるのだけれど、Digester使ってMovie情報をモデルに変換。

例外処理作りこんでないわ、Response Codeで判定してないわでやっつけ感がいっぱい。

LinkつけるとかPermanent Linkを修正するとかとかで記事はUpdateするけれど、だいたいこんな感じ。

ニコニコ動画にAPI(?)を発行

Struts2+REST+Hibernateから少し離れて、ニコニコ動画から各種情報を取得するプログラムをカリカリ書いてます。

Struts2のもそうだけれど、最終的にやりたいのは素敵なチャートを描きたいなーっと、できれば自分の興味があるまたは自分に役立つのがよいなーっと思ってたわけで。ニコ動関連は試したい事は多々あるんだけれど、そのうちの2つをやってしまおうかと思っています。

1つはうp主の傾向や関連、勢力(?)みたいなものをインフォグラフィクス的に出すのと、もう1つは自分の好きな曲をDL→mp3→タグ付け→管理するアプリみたいなもの。

検索結果取得と動画情報取得のAPIは各々あるので1つ目のは特にネックになりそうなことはなし。2つ目の方はニコ動にログインする必要があるのだけれどこれも今日実装完了。ログインしていないと取得できない情報を取得できたのでとりあえず問題なさげ。SessionとかConnectionの管理がちょっとずさんなのでそこを手直しすれば個人使用には耐えれそう。
あとは…、あまりニコ動サーバに負荷をかけないようにスケジューリングとアクセス頻度を確保しますよ、っと。

こういうときってAgentとか細工した方がよいのかしら。「Mozilla/5.0 (Windows NT 6.3; WOW64) すいません、ちょっと通りますよ・・・」みたいな。

Struts2は必ずexecuteメソッドを呼ぶわけではない

Struts2のサンプルを作り始めたときに呼ばれるメソッドで詰まった話。標準では必ずexecuteメソッドが呼ばれると思っていたのだけれどそうでもないらしい。

struts2-blank.warからサンプルを作り始めたときは特に問題にはならなかったのだけれど、struts2-rest-showcase.warから作り始めたたらexecuteメソッドが呼ばれない。かわりにindexメソッドを呼ぼうとする。

色々調べてみるとこのサイトにヒントがありました。

The problem is resolved, I had to remove the struts2-rest plugin. 

試しにstruts2-rest-plugin-2.3.16.3.jarを削除してみると確かにexecuteが呼ばれる。restサービスを作りやすくするぐらいの認識しかなったのだけれどどのように動くか全然抑えてなかったです。

公式サイトを見てみるとURLがどのようなルールでActionに結びつくのかが書いてある。『idパラメータがなければindexメソッド呼ぶよ』とかとか。

他にstruts2-rest-showcase.war内のstruts.xml見るとdefault.parent.packageが”rest-default”だったりと色々と考慮しなさ過ぎていたみたいです。