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