水 02/28
今回のMash up Award 2ndでは、とにかくたくさんAPIが提供されていますが、wacca API が面白そうです。
waccaでは、ユーザ登録すると、アーティストの音源を登録することができ、これを公開することができます。
CALTA ProjectでやっているStreamer’s Mapとマッシュアップすると面白いかもしれません。
で、このwacca APIですが、インタフェイスは、XML-RPCです。呼び出しメソッドについては、仕様が書かれているのですが、サンプルソースがありません。
もちろん、XML-RPCを理解できていれば、簡単なのですが、知らない人にとっては、これだけではハードルが高いかもしれません。
というわけで、Javaでのサンプルコードを以下に書いておきます。参考にしてみてください。
ミュージック検索(song.Search)の例です。
なお、XML-RPCのライブラリはここから入手することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import org.apache.xmlrpc.client.*; import java.net.*; import java.util.*; : : XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); try { string utl = "http://a.wacca.tv/api/xmlrpc"; config.setServerURL(new URL(url)); } catch (MalformedURLException ex) { ex.printStackTrace(); } XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); /*Dreamというキーワードで検索*/ String keyword = "Dream"; Vector parameterList = new Vector(); Hashtable hash = new Hashtable (); /* パラメータ名をキーの値をHashtableに追加していきます*/ hash.put("keyword",new String (keyword)); hash.put("mode",new String ("song_title")); hash.put("genre",new Integer(0)); hash.put("sub-genre",new Integer(0)); hash.put("copyright",new String ("all")); hash.put("order",new String ("play")); hash.put("limit",new Integer(10)); hash.put("offset",new Integer(1)); parameterList.add (hash); try { Object result= client.execute("song.Search", parameterList); } catch (XmlRpcException ex) { ex.printStackTrace(); } |
取得された結果( Object result )は、Objectの配列になります。
なので、Object配列にキャストして、要素を取り出します。取り出された要素は、HashMapインターフェイスで参照できますので、取得したいパラメータ名をキーに値を取得します。
1 2 3 4 5 6 7 8 9 | /* 0番目の要素を取り出します */ HashMap map = (HashMap)((Object[])result).get[0]; /*曲名*/ String songTitle = (String)map.get("song_title"); /*アーティスト名*/ String artistName = (String)map.get("artist_name"); : : |
こんな感じです。 やってみれば、思いのほか簡単にできると思いますので、おもしろいマッシュアップを考えてみてはいかがでしょうか。
asxファイルへのリンクも取得できるので、ストリーミング再生などもできそうですね。
written by k-matsu
この記事へのトラックバックURL