In questo capitolo continua la panoramica sulle "API del Web 2.0". Illustreremo l'utilizzo di alcuni dei più interessanti servizi Web 2.0 con Ruby. Vedremo nell'ordine YouTube, Flickr e Twitter.
Tra le tante gemme che permettono di utilizzare i vari servizi offerti da YouTube, illustreremo di seguito la gemma youtube che è un'interfaccia Ruby alle YouTube REST API.
Anche in questo caso per utilizzare le API è necessario un ID ottenibile dal sito youtube.com. Vediamo subito un esempio, lo stesso che abbiamo utilizzato per Yahoo! Video. Facciamo una ricerca sui tag e poi creiamo con i risultati una pagina Web con BlueCloth
utilizzando gli attributi title
, url
e thumbnail_url
di ogni video.
require 'rubygems' require 'youtube' require 'bluecloth' APP_ID = 'your_youtube_id' yt = YouTube::Client.new APP_ID query = 'banhart' videos = yt.videos_by_tag(query) str = "# Video search for _#{query}_n" videos.each do |v| str << "[![#{v.title}](#{v.thumbnail_url})](#{v.url})n" end bc = BlueCloth::new(str) puts bc.to_html
Oltre che attraverso i tag la ricerca può essere effettuata utilizzando altri criteri come l'ID, l'utente e vari altri:
videos_by_category_and_tag
videos_by_category_id_and_tag
videos_by_playlist
videos_by_related
videos_by_user
Per ogni ricerca è possibile indicare il numero di risultati che si intende ricevere, il valore di default è 20
. Le ricerche restituiscono delle istanze della classe YouTube::Video che rappresenta i video ed ha i seguenti attributi: author
, comment_count
, description
, embed_url
, id
, length_seconds
, rating_avg
, rating_count
, tags
, thumbnail_url
, title
, upload_time
, url
e view_count
. Inoltre, attraverso il metodo video_details
, è possibile ricavare altre utili informazioni per ogni video.
Utilissimo nello sviluppo di pagine Web è il metodo embed_html
di YouTube::Video
che restituisce il codice HTML necessario a inserire un video in una pagina Web, ad esempio:
<object width="425" height="344"> <param name="movie" value="http://www.youtube.com/v/5rAiLw_K1R0&hl=en"></param> <param name="wmode" value="transparent"></param> <embed src="http://www.youtube.com/v/5rAiLw_K1R0&hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed> </object>