Flying memes

Nabaztag e Playlist.com

Per chi ancora non conoscesse i due termini che compongono il titolo di questo articolo ecco una breve introduzione:

Playlist.com
Questo sito utilizza un motore di ricerca interno per indicizzare i file mp3 che trova nella rete, tali file vengono poi categorizzati utilizzando le informazioni disponibili (tag mp3, ecc..). Utilizzando una form di ricerca è possibile ricercare tra i file indicizzati, ascoltarli e costruirsi una propria playlist che si può poi condividere con altre persone.

NabazTag
Il nabaztag è un gadget elettronico, dalla forma di un coniglio, capace di connettersi alla rete wireless domestica di intrattenere ospiti e residenti con tutta una serie di servizi vocali (text-to-speech, podcast, lettura di messaggi, email ed RSS, ecc.. ). Violet, la casa produttrice, ha ben pensato di mettere a disposizione di eventuali sviluppatori interessati delle API con le quali interagire col coniglio.

Nabaztag Command Line Tool
Ho creato (e caricato su github) uno script in Ruby che, dato l’identificativo di una playlist di playlist.com, si interfaccia con le API del nabaztag e, utilizzando apposite funzioni, fa in modo che il coniglio esegua l’intera playlist selezionata.

Fulcro di questo piccolissimo programma è una bellissima libreria di cui ho sentito parlare poco tempo fa: Scrubyt. Scrubyt serve essenzialmente ad interagire con il web, questo comprende parsing di pagine HTML ma anche compilazione di form e click su link.

Per darvi un assaggio delle potenzialità di questa libreria vi allego il codice che ho usato per recupeare le informazioni sull’url dei vari file mp3, questi sono i passi:

  1. recuperare il file xml dall’indirizzo view.playlist.com/[id_playlist]/asx
  2. estrarre per ogni nodo ‘entry’ l’attributo href del tag ref

      playlist = Scrubyt::Extractor.define do
          fetch "http://view.playlist.com/#{params[0]}/asx"
          ele "//entry//ref" do
            mp3 "href", :type=>:attribute
          end
      end

A questo punto nella variabile ‘playlist’ avrò un elenco di hash ognuno di essi nella forma :mp3 => ‘url’.

Tags: , , ,