Intereting Posts
Регулярное выражение для получения значения внутри двойных фигурных скобок "{{}}" Как вставить массив значений в разные столбцы таблицы mysql? .htaccess – Как перенаправить все URL-адреса в url.php, кроме index.php Обнаружение спамеров с помощью MySQL Специальные символы HTML (иностранные языки) Внедрение данных изображения IPTC с помощью PHP GD Magento getUrl не работает с объектом каталога / категории? Использование активного каталога для аутентификации пользователей на сайте интрасети Как преобразовать строку на сегодняшний день Получить место просмотра, переданное в композитор вида laravel Проблема с переменной областью в PHP найти ссылку в pdf-расширении Как получить последний вставленный id из таблицы MySQL Laravel 4.2 Правила проверки – текущий пароль должен соответствовать значению базы данных Как обновить имена столбцов CSV с заголовком таблицы базы данных

Получить данные Youtube VideoID в массиве

Я боролся с этим часами, и я понятия не имею, почему это не работает. Мне нужно получить информацию из VideoID с помощью API YouTube и Zend, поэтому я создал такую ​​функцию

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; } 

Причина, по которой я делаю это с массивом и функцией, – это то, что я хочу кэшировать функцию.

Я понятия не имею, что не так с кодом, я использую точно такой же, просто изменяя getVideoEntry для других типов фидов, и он работает.

Я продублировал ваш код и запускал его. Теперь getVideoEntry, похоже, возвращает данные одного видео, но по какой-то причине вы ожидаете, что это будет коллекция? Кроме того, если вы кешируете, вы можете создать некоторую проверку для пустого возврата данных.

Вот какой-то переработанный код, который отлично работал для меня:

 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; } 

Это ошибка в структуре Zend:

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

Для быстрого исправления вы можете редактировать Zend / Gdata / YouTube / VideoEntry.php

строка 587:

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

Это не фантазия, но выполняет свою работу.