Arquivo para fevereiro \04\UTC 2011

Listando vídeos do YouTube com PHP

Neste pequeno artigo irei disponibilizar esta classe bem simples para listar os vídeos de um determinado usuário através dos feeds do YouTube.

Para que a classe funcione, é necessário que as extensões cURL e SimpleXML estejam habilitadas no seu servidor apache. Eis o código da classe:


<?php

/**
 * Class YT_Video
 * Get an array of the most recent videos of the specified username
 *
 * @abstract
 * @example $videos = YT_Videos::getUserVideos('username');
 */
abstract class YT_Videos
{
    /**
     * @var string URL to youtube feeds
     * @static URL of youtube feeds
     */
    private static $youtube_feedUrl = 'http://gdata.youtube.com/feeds/base/users/%s/uploads?orderby=updated&v=2';

    /**
     * @static
     * @method array getUserVideos($username) Get the videos from $username
     * @return array Returns an array of videos
     * @return NULL Returns NULL if the user does not exists
     */
    public static function getUserVideos($username)
    {
        $cURL = curl_init(sprintf(self::$youtube_feedUrl, $username));
        curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
        $cURL_result = curl_exec($cURL);
        curl_close($cURL);

        $xml = new SimpleXMLElement($cURL_result);

        if($xml->getName() == 'erros') { return NULL; }

        $videos = array();
        foreach($xml->entry as $video)
        {
            /*
             * Separa a URL para pegar o id do vídeo
             */
            $url = (string)$video->link['href'];
            parse_str(parse_url($url, PHP_URL_QUERY), $params);
            $id = $params['v'];

            /*
             * Preenche um array com os dados do vídeo
             */
            $videos[] = array(
                'id'    => $id,
                'title' => (string)$video->title,
                'thumb' => 'http://i' . rand(1, 4) . '.ytimg.com/vi/' . $id . '/hqdefault.jpg',
                'url'   => $url
            );
        }

        return $videos;
    }
}

?>

Agora para usar a classe é incluir ela e chamar de forma estática o método “getUserVideos”. Veja o exemplo:

...
$videos = YT_Videos::getUserVideos('andreoav');
// Este teste verifica se o usuário existe, já que o método retorna NULL caso usuário não exista, ou que algum outro erro tenha acontecido.
if(!$videos)
{
    // Listamos os videos aqui.
}

Espero que tenham gostado!!

Este método é uma implementação em forma de classe baseado no post do Thiago Belem.

Anúncios