無既読アプリ。開発日記

日々プログラミングの勉強しています。 かじった物、触れた物→ java/processing/c/c++/c#/MATLAB/Perl/Ruby/javascript/Objective-C/R/Android/IOS/ubuntu/linux

Last.fm Web API で類似アーティストを取得してみた。 ( java / artist.getsimilar )

Last.fm」のアーティストの類似アーティストを返すWebAPIを使ってみた。
今回はartist.getsimilarを使ったが、アーティスト情報やアルバム情報、楽曲の長さも調べられるメソッドもあるので便利。

f:id:juntec:20151205115404p:plain

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 .....省略