Posts Tagged ‘ PHP ’

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.