Last.fm Web API で類似アーティストを取得してみた。 ( java / artist.getsimilar )
「Last.fm」のアーティストの類似アーティストを返すWebAPIを使ってみた。
今回はartist.getsimilarを使ったが、アーティスト情報やアルバム情報、楽曲の長さも調べられるメソッドもあるので便利。
APIを使って例えば類似度の結果を表示するページを作ってみた。ページはperlで記述。
http://www.kthrlab.jp/members/ryouhei/jun/artistgetsimilar.cgi
Java ver..
public static void createSimilar(String artist) { //今回は類似アーティストを取得する artist.getsimilar を使用 //artist名 は UrlEncode する必要あり //●●● には前もって取得した api key を入れる String encArtist = artist; String urlString = "http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist=" + encArtist + "&api_key=●●●&format=json"; try {URL url = new URL(urlString); URLConnection uc = url.openConnection(); uc.setDoOutput(true);//POST可能にする uc.setRequestProperty("User-Agent", "@IT java-tips URLConnection");// ヘッダを設定 uc.setRequestProperty("Accept-Language", "ja");// ヘッダを設定 OutputStream os = uc.getOutputStream();//POST用のOutputStreamを取得 String postStr = "foo1=bar1&foo2=bar2";//POSTするデータ PrintStream ps = new PrintStream(os); ps.print(postStr);//データをPOSTする ps.close(); InputStream is = uc.getInputStream();//POSTした結果を取得 BufferedReader reader = new BufferedReader(new InputStreamReader(is)); //後はreaderに入ってる取得した結果をあれこれ }
アーティスト名をUrlEncodeするコード
結構コード雑だけど
public static String ArtistEncoder(String setArtist){ String enc = "utf-8"; String encArtist = ""; try { encArtist = (URLEncoder.encode(setArtist, enc)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } encArtist = encArtist.replace("+", "%20"); encArtist = encArtist.replace("*", "%2a"); encArtist = encArtist.replace("-", "%2d"); return encArtist; }
取得した「コブクロ」の類似アーティストは以下のような感じ
MISIA 槇原敬之 福山雅治 DREAMS COME TRUE Chemistry 一青窈 小田和正 久保田利伸 絢香 徳永英明 中島美嘉 Exile スキマスイッチ ケツメイシ ゆず Juju FUNKY MONKEY BABYS 桑田佳祐 レミオロメン HY Mr.Children .....省略