Jep! Jep!
$flores = array( 'rosa', 'clavel', 'margarita', 'violeta', 'crisantemo' );
Para los que creían que sólo habían BSOD en aeropuertos y olimpiadas…

Y no, no es una feature. Mac OS X también falla.
Vía Octa que lo vio en Flickr.
El peor día de la vida de Enjuto Mojamuto, protagonizada por un grupo de frikis en la Campus Party de España.
El hombre del 1:32 me encanta :)
Hace tiempo se me ocurrió mostrar en una sola página todo lo que hacía en la llamada Web 2.0. Una de esas actividades mostradas eran las últimas canciones escuchadas en mi pc gracias al programa de Last.fm, su API, y PHP. Ahora, inspirado en el artículo de Carlos Martínez que vi en Anieto2k voy a desempolvar esa función para mostrar cómo listar las última canciones escuchadas usando la extensión DOM en PHP (la cual al parecer forma parte del núcleo desde la versión 5).
Para empezar, la documentación de la API de Last.fm está en el sitio de Audioscrobbler. En la primera tabla hay un método llamado “Recent Tracks” con una pequeña descripción y los ejemplos de acuerdo a qué formatos de salida permite dicho método. Para este caso elegí “XML”.
Así, la dirección que usaré para tomar los datos de la API en salida XML será:
http://ws.audioscrobbler.com/1.0/user/nick/recenttracks.xml
Se debe cambiar “nick” por el nick del usuario del que queremos ver las últimas canciones escuchadas. En mi caso sería esta dirección.
function get_my_lastfm($nick, $n=NULL){
$doc = new DOMDocument('1.0', 'UTF-8');
if(!@$doc->load("http://ws.audioscrobbler.com/1.0/user/$nick/recenttracks.xml")){
$my = "No se pudieron cargar los datos de Last.fm";
}
else{
$channel = $doc->getElementsByTagName('recenttracks')->item(0);
$items = $channel->getElementsByTagName('track');
if(!$n || $n=="" || ($n>$items->length)){
$n = $items->length;
}
$my = "<ul>";
for($i=0;$i<$n;$i++){
$artist = $items->item($i)->getElementsByTagName('artist')->item(0)->nodeValue;
$name = $items->item($i)->getElementsByTagName('name')->item(0)->nodeValue;
$link = $items->item($i)->getElementsByTagName('url')->item(0)->nodeValue;
$my .= "<li>";
$my .= "<a href=\"$link\">";
$my .= htmlspecialchars($artist." - ".$name);
$my .= "</a>";
$my .= "</li>";
}
$my .= "</ul>";
}
return $my;
}
La función get_my_lastfm() tiene dos parámetros: nick, que indica el nick del usuario de Last.fm, y n que es el número de canciones a mostrar. Se crea el objeto DOMDocument y luego se recorre el documento XML. Por último, devuelve una lista desordenada con las canciones en formato Artista - Tema con un link al sitio de Last.fm en cada elemento.
El resultado final lo puedes ver en el apartado de Last.fm en MyWeb 2.0.
Actualización: Carlos, el autor de la nota original, me dio una sugerencia en los comentarios que implementé en el sidebar de este blog. Pronto publicaré el código necesario para ello ;)
Ayer, por sugerencia de Carlos Martínez, hice una nueva función que permite obtener un array con la información de un álbum de música usando Last.fm.
function get_album_info($artist, $album){
$doc = new DOMDocument('1.0', 'UTF-8');
if(!@$doc->load("http://ws.audioscrobbler.com/1.0/album/$artist/$album/info.xml")){
$info['artist'] = "";
$info['album'] = "";
$info['cover'] = "cover.jpg";
$info['url'] = "";
$info['n_tracks'] = 0;
}
else{
$info['artist'] = $artist;
$info['album'] = $album;
$channel = $doc->getElementsByTagName('album')->item(0);
$info['cover'] = $channel->getElementsByTagName('coverart')->item(0)->getElementsByTagName('small')->item(0)->nodeValue;
$info['url'] = $channel->getElementsByTagName('url')->item(0)->nodeValue;
$tracks = $channel->getElementsByTagName('tracks')->item(0);
$track = $tracks->getElementsByTagName('track');
$info['n_tracks'] = $track->length;
for($i=0;$i<$info['n_tracks'];$i++){
$info['track'][$i]['title'] = $track->item($i)->getAttribute('title');
$info['track'][$i]['url'] = $track->item($i)->getElementsByTagName('url')->item(0)->nodeValue;
}
}
return $info;
}
Inesperadamente me he convertido en el feliz dueño de una HP Pavilion. No haré un review porque tengo una muy pequeña idea de cómo va esto de las portátiles (de hecho, esta es la primera que tengo), solo puedo decir que me encanta; es súper cómodo poder estar echado en la cama chateando mientras escucho música, aunque obviamente no todo el día usaré esta belleza para perder el tiempo en el messenya.
No podía faltar el unboxing, que si no no soy geek!