PHP: visualizzare i video di YouTube

PHP: visualizzare i video di YouTube

Possiamo visualizzare i nostri video o i video degli altri utenti di YouTube semplicemente accedendo al feed RSS di ciascun utente. Con PHP possiamo estrarre da questo feed l'URL con cui andremo a costruire l'URL finale di un tradizionale elemento iframe. Vediamo come.

L'URL di ciascun feed utente è il seguente:

http://gdata.youtube.com/feeds/base/users/nomeutente/uploads?alt=rss&v=2&orderby=published&client=ytapi-youtube-profile

All'interno di questo feed abbiamo tanti elementi item contenuti nel wrapper globale channel che rappresentano i nostri video. Tali elementi contengono ciascuno un elemento link con l'URL alla pagina del video:

http://www.youtube.com/watch?v=OnoUrrue3lE&feature=youtube_gdata

Ma, come saprete, l'URL degli iframe è diverso:

http://www.youtube.com/embed/OnoUrrue3lE?rel=0

Quello che li accomuna è l'ID del video, che nel nostro caso è la stringa OnoUrrue3lE. Tutto quello che dobbiamo fare è trasformare il primo URL nel secondo. Definiamo la seguente funzione PHP:


function fetchYouTubeVideos($username='gabrieleromanato', $limit=3)
{
	
		$feedURL = 'http://gdata.youtube.com/feeds/base/users/' . $username . '/uploads?alt=rss&v=2&orderby=published&client=ytapi-youtube-profile';
		$html = '<div id="youtube">' . "\n";
		
		if(file_get_contents($feedURL)) {
		
			$feed = simplexml_load_file($feedURL);
			$items = $feed->channel->item;
			$index = -1;
			$length = $limit - 1;
			
			do {
			
				$index++;
				
				$html .= '<div class="video">' . "\n";
				$link = $items[$index]->link;
				$iframeLink = str_replace('watch?v=', 'embed/', $link);
				$iframeLink = preg_replace('/&.+/', '', $iframeLink);
				
				$html .= '<iframe src="' . $iframeLink . '?rel=0" width="560" height="315" frameborder="0" allowfullscreen></iframe>';
				
				$html .= '</div>' . "\n";
				
			
			
			}while($index < $length);
			
			
			$html .= '</div>';
			
			return $html;
			
				
		
		} else {
		
			$html .= '<p>Errore nel caricamento.</p>' . "\n";
			$html .= '</div>';
			
			return $html;
		
		}
	
	
}

La parte interessante della funzione è la manipolazione della stringa dell'URL tramite le funzioni str_replace() e preg_replace(). Volendo ottimizzare la performance, potete evitare le espressioni regolari e usare solo le funzioni per le stringhe.

La gestione degli errori è rudimentale. Per una migliore gestione delle eccezioni nel parsing XML vi consiglio di usare le funzioni apposite fornite da PHP per XML.

Torna su