Usando a API LastFm em Java
A LastFm é a queridinha das rádios online, mesmo com diversos concorrentes de alto nível como iLike, Pandora, Imeem, e outros tantos, aqui no Brasil a LastFm é um grande sucesso, seus milhões de usuários brasileiros ignoraram o bloqueio de alguns recursos e continuam fazendo scrobbling de seus áudios diáriamente.
Além de um database music, o LastFm é uma rede social e grande parte de suas informações são públicas e podem ser acessadas facilmente através de sua API.
Vamos dar inicio a um exemplo de como consumir os dados utilizando a library para Java lastfm-java. Antes de tudo, se você não tiver uma conta no LastFm, crie-a agora e depois obtenha a API Key. Neste mesmo link você encontrará a documentação da API, que detalha claramente a funcionalidade de cada método disponível e como é o seu acesso e se necessita ou não de autenticação.
Em nosso primeiro exemplo vamos fazer uma página web que irá listar as últimas faixas ouvidas e a lista de amigos de um usuário específico, com isto, você perceberá que nenhuma autenticação é necessária pois os dados são públicos.
Criei a classe LastFmClient, para facilitar os casts necessários e centralizar as chamadas da API.
public class LastFmClient {
// altere para a sua api key
private static final String APIKEY = "XyZaBc001";
private String uName = null;
/**
*
* @param uName
*/
public LastFmClient(String uName){
this.uName = uName;
}
/**
*
* @return User/Friends List
*/
public ArrayList<User> getFriends(){
return (ArrayList<User>) User.getFriends(uName, APIKEY);
}
/**
*
* @return Tracks List
*/
public ArrayList<Track> getTracks(){
return (ArrayList<Track>) User.getRecentTracks(uName, APIKEY);
}
}
Isto é o suficiente para você montar a lista como descrito acima, veja:
String userName = request.getParameter("username");
if( userName!=null && !userName.trim().equals("") ){
// instancia a classe de backend
LastFmClient client = new LastFmClient(userName);
// seu código aqui
}
Ouvidas recentemente.
<table border="0" cellpadding="2" cellspacing="1">
<% for(Track t : tracks){ %>
<tr>
<td valign="top" align="left">
<br/><strong><%=t.getAlbum() %></strong>
<br/><em><%=t.getArtist() %></em>
</td>
</tr>
<% }// for end tracks %>
</table>
Lista de amigos.
<table border="0" cellpadding="2" cellspacing="1">
<tr>
<%
ArrayList<User> friends = client.getFriends();
int count = 1;
for(User f : friends){
%>
<td valign="top" align="center">
<% if( f.getImageURL()!=null ){ %><img src="<%= f.getImageURL() %>"><% } %>
<br><strong><%=f.getName() %></strong>
<br><a href="<%= f.getUrl() %>"><%= f.getUrl() %></a>
<br/>
</td>
<%
if( count%5==0 ) out.print("</tr><tr>");
count++;
}// for end friends
}//
%>
Faça download do código completo.
Pronto, você conseguiu acessar dados do LastFm, usando o caminho correto e fácil, sem autenticação. Mas alguns dados são restritos e necessitam da autorização do usuário, informações básicas como a quantidade de músicas ouvidas, data de cadastro, nome, etc. são de acesso restrito.