Bonjour,

j'ai crée une datasource pour cakephp qui permet de récupérer des listes de Vidéos, Playlists et Channels de Youtube.

https://github.com/ch0c44/youtubeDatasource

Pour l'installation vous ajouter le dossier Model dans app/ de votre projet Cakephp et dans Config/database.php vous rajoutez cette ligne

public $youtube = array(
        'datasource' => 'YoutubeSource',
        'keyApi' => '/* YOUR API KEY */',
        'database' => null
    );

Ensuite vous créer un Model, par exemple Youtube.php qui ressemblera à sa

<?php 
class Youtube extends AppModel
{
    public $useDbConfig = 'youtube';
}

et ensuite vous pouvez l'utiliser comme bon vous semble dans vos controller

Example:
Je veux chercher toutes les vidéos de grafikart dont le channelId=UCKv-KgFIYK4lLsfquLwh0zg, j'exécute dans mon controller

$video = $this->Youtube->searchList(array('channelId' => 'UCKv-KgFIYK4lLsfquLwh0zg'));

la variable $video me retourne un tableau du genre

array(
    'kind' => 'youtube#searchListResponse',
    'etag' => '"jqkgdlxEh5z8o67pDlOVdfA3-9M/0ac_P_mT59q-dnv14u5z74VzaJo"',
    'nextPageToken' => 'CAUQAA',
    'pageInfo' => array(
        'totalResults' => (int) 268,
        'resultsPerPage' => (int) 5
    ),
    'tokenPagination' => array(
        'nextPageToken' => 'CAUQAA'
    ),
    'items' => array(
        (int) 0 => array(
            'kind' => 'youtube#searchResult',
            'etag' => '"jqkgdlxEh5z8o67pDlOVdfA3-9M/gAKzD4-Rjo8cR-EyDmeVMO7hne0"',
            'id' => array(
                'kind' => 'youtube#video',
                'videoId' => '3Iaqaiwx0kU'
            ),
            'snippet' => array(
                'publishedAt' => '2012-10-31T11:26:30.000Z',
                'channelId' => 'UCKv-KgFIYK4lLsfquLwh0zg',
                'title' => 'Présentation Windows 8',
                'description' => 'Une petite présentation et un premier avis sur Windows 8. http://grafikart.fr.',
                'thumbnails' => array(
                    'default' => array(
                        'url' => 'https://i.ytimg.com/vi/3Iaqaiwx0kU/default.jpg'
                    ),
                    'medium' => array(
                        'url' => 'https://i.ytimg.com/vi/3Iaqaiwx0kU/mqdefault.jpg'
                    ),
                    'high' => array(
                        'url' => 'https://i.ytimg.com/vi/3Iaqaiwx0kU/hqdefault.jpg'
                    )
                ),
                'channelTitle' => 'grafikrt'
            )
        ),
        (int) 1 => array(
            'kind' => 'youtube#searchResult',
            'etag' => '"jqkgdlxEh5z8o67pDlOVdfA3-9M/XAgU7Va8_n9fSudSKQYi_YxnyjY"',
            'id' => array(
                'kind' => 'youtube#video',
                'videoId' => 'yg3YedO3GT8'
            ),
            'snippet' => array(
                'publishedAt' => '2012-04-03T21:28:33.000Z',
                'channelId' => 'UCKv-KgFIYK4lLsfquLwh0zg',
                'title' => 'Tutoriel PHP : Développer un site : Jour 1, La base de données',
                'description' => 'A propos de ce tutoriel : http://www.grafikart.fr/tutoriels/php/developper-site-jour1-base-donnees-183 Plus de tutoriels : http://www.grafikart.fr.',
                'thumbnails' => array(
                    'default' => array(
                        'url' => 'https://i.ytimg.com/vi/yg3YedO3GT8/default.jpg'
                    ),
                    'medium' => array(
                        'url' => 'https://i.ytimg.com/vi/yg3YedO3GT8/mqdefault.jpg'
                    ),
                    'high' => array(
                        'url' => 'https://i.ytimg.com/vi/yg3YedO3GT8/hqdefault.jpg'
                    )
                ),
                'channelTitle' => 'grafikrt'
            )
        ),
...

Il n'a que les listes de vidéos pour l'instant, vous pouvez forker le dépot si vous voulez pour ajouter d'autre module

Voila la doc de l'api pour vous aidez https://developers.google.com/youtube/v3/docs/

2 réponses


Et dire que j'ai galérer il y a une semaine pour avoir l'Api de Youtube sur CakePHP ><

Merci pour cette source. Je vais la tester car elle m'interresse.
Je ferais un petit retour après mon intégration.

leknoppix