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

02/28

前回最優秀賞をいただいた、SUN×RECRUIT Mash up Awardですが、 「Mash up Award 2nd」として、2回目が開催されています。

われわれCALTA Projhectも、もちろん、今回も参戦予定です。

今回は、APIの提供企業がどーんと増えて、APIがてんこ盛りです。

前回提供されたAPIは、REST形式のみでしたが、今回は、JSON形式での提供や、SOAP、XML-RPCなどインタフェイスも多様化しています。CALTA Projectの開発環境は、Javaがメインなので、SOAP、XML-RPCについては親和性がよいので、いろいろ試してみようと思っています。

たとえば、路線検索のAPIのRailGo は、SOAPを使って情報を取得することになります。ただ、Javaでやる場合、認証をSOAPヘッダを使ってやるので、ちょっとした細工が必要になります。これは、SUNの岡崎さんのブログで詳しく解説されていますので、そちらを参考にしてみてください(岡崎さん、参考にさせていただきました。ありがとうございました)。

キャッチコピーは「マッシュアップ・レシピの達人シェフ。いいネタ揃ってます。
いいネタをいっぱい揃えてくれたそうなので、このネタをどう料理するかがポイントですね。腕に覚えのある人はもちろん、最近、面白いプログラム作ってないなぁ、という人、プログラミングをこれから勉強してみたいと思っている人、ぜひチャレンジしてみてはいかがでしょうか。

といいつつ、締め切りまであと10日ほどですね。われわれも頑張ります。

written by k-matsu
この記事へのトラックバックURL