Obtenga los detalles del videoID de Youtube en una matriz

He estado luchando con esto durante horas y no tengo idea de por qué no funciona. Necesito obtener Detalles de un VideoID usando la API de YouTube y Zend, así que creé una función como esta

function listYoutubeVideo($id) { $videos = array(); try { $yt = new Zend_Gdata_YouTube(); $videoFeed = $yt->getVideoEntry($id); foreach ($videoFeed as $videoEntry) { $videoThumbnails = $videoEntry->getVideoThumbnails(); $videos[] = array( 'thumbnail' => $videoThumbnails[0]['url'], 'title' => $videoEntry->getVideoTitle(), 'description' => $videoEntry->getVideoDescription(), 'tags' => implode(', ', $videoEntry->getVideoTags()), 'url' => $videoEntry->getVideoWatchPageUrl(), 'flash' => $videoEntry->getFlashPlayerUrl(), 'dura' => $videoEntry->getVideoDuration(), 'id' => $videoEntry->getVideoId() ); } } catch (Exception $e) { } return $videos; } 

La razón por la que lo hago con una matriz y una función es porque quiero almacenar en caché la función.

No tengo idea de qué está mal con el código, utilizo exactamente el mismo cambio de getVideoEntry para otros tipos de feeds y funciona.

Dupliqué tu código y lo ejecuté. Ahora, getVideoEntry parece devolver los datos de un solo video, pero por alguna razón, ¿espera que sea una colección? Además, si almacena en caché, es posible que desee crear algún control para un retorno de datos vacío.

Aquí hay un código revisado que funcionó perfectamente para mí:

 function listYoutubeVideo($id) { $video = array(); try { $yt = new Zend_Gdata_YouTube(); $videoEntry = $yt->getVideoEntry($id); $videoThumbnails = $videoEntry->getVideoThumbnails(); $video = array( 'thumbnail' => $videoThumbnails[0]['url'], 'title' => $videoEntry->getVideoTitle(), 'description' => $videoEntry->getVideoDescription(), 'tags' => implode(', ', $videoEntry->getVideoTags()), 'url' => $videoEntry->getVideoWatchPageUrl(), 'flash' => $videoEntry->getFlashPlayerUrl(), 'dura' => $videoEntry->getVideoDuration(), 'id' => $videoEntry->getVideoId() ); } catch (Exception $e) { /* echo $e->getMessage(); exit(); */ } return $video; } 

Este es un error en Zend framework:

http://framework.zend.com/issues/browse/ZF-12461?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel#issue-tabs

Para una solución rápida, puede editar Zend / Gdata / YouTube / VideoEntry.php

línea 587:

 // $videoId = substr($fullId, $position + 1); $url = $this->getFlashPlayerUrl(); $videoId = substr($url, 25, 11); 

No es lujoso, pero hace el trabajo.