dimanche 7 novembre 2010
Je vous ai montré plus tôt cette semaine comment valider la syntaxe d'un lien YouTube et extraire la clé de l'URL. Maintenant, je vais vous montrer comment, à l'aide d'un composant du Zend Framework, obtenir la liste des thumbnails d'une vidéo YouTube.
Pour ce faire, j'ai utilisé la classe Zend_Gdata_YouTube. Si vous comptez récupérer des données en mode lecture seule, vous n'aurez pas besoin de vous authentifier au service.
Liez d'abord la classe principale à votre projet :
require_once('Zend/Gdata/YouTube.php');Si vous n'utilisez pas l'autoloader, vous risquez d'obtenir le message suivant :
Fatal error: Class 'Zend_Uri_Http' not found
Si c'est le cas, vous avez le choix d'utiliser le mécanisme d'autoload ou bien d'inclure la classe Zend_Uri_Http :
require_once('Zend/Uri/Http.php');Vous pouvez alors instancier l'objet et récupérer les informations d'une vidéo en passant la clé extraite de l'URL à la fonction getVideoEntry(). Idéalement, utilisez un try/catch pour attraper les exceptions, par exemple au cas où la clé fournie est érronée ou n'existe plus.
# clé de la vidéo à récupérerSi vous ne réussissez pas à faire fonctionner cet exemple et que le message d'erreur ci-dessous est affiché, vérifiez votre version du ZF. Je n'ai eu qu'à mettre à jour ma vieille version du ZF vers la version 1.10.8 pour qu'il disparaisse.
$key = 'lX1r6fQjBq4';
$youtube = new Zend_Gdata_YouTube();
$youtube->setMajorProtocolVersion(2);
try{
$video = $youtube->getVideoEntry($key);
$thumbnails = $video->getVideoThumbnails();
foreach($thumbnails as $image){
echo $image['url'] . "\n";
echo $image['width'] . "\n";
echo $image['height'] . "\n";
# correspond à quel moment de la vidéo la capture a été prise
# echo $image['time'] . "\n";
}
}
catch(Exception $e){
# Expected response code 200, got 400 GData InvalidRequestUriException Invalid id
echo $e->getMessage();
# throw new Exception($e);
}
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1 bytes)
Enfin, vous devez savoir qu'il y aura toujours une image nommée default.jpg, que les autres seront numérotées [1-n].jpg et que l'image haute définition est hqdefault.jpg. Autrement dit, si vous connaissez la clé unique, vous pouvez recomposer le lien vers les images en l'insérant dans l'URL :
- http://i.ytimg.com/vi/CLÉ/default.jpg
- http://i.ytimg.com/vi/CLÉ/hqdefault.jpg