YouTube API - Как ограничить результаты для разбиения на страницы?

Я хочу захватить загрузки пользователя (т.е.: Би-би-си) и предел вывод к 10 на страницу.

Пока я могу использовать следующий URL: http://gdata.youtube.com/feeds/api/users/bbc/uploads/?start-index=1&max-results=10

Вышеупомянутые работы хорошо.

Я хочу использовать метод запроса вместо этого:

Документы Платформы Зенда: http://framework.zend.com/manual/en/zend.gdata.youtube.html

Состояние, что я могу получить видео, загруженные пользователем, но идеально я хочу использовать метод запроса ограничить результаты для разбиения на страницы.

Метод запроса находится на документах платформы Зенда (та же страница как прежде под заголовком 'Поиск видео метаданными') и подобен этому:


$yt = new Zend_Gdata_YouTube();
$query = $yt->newVideoQuery();
$query->setTime('today');
$query->setMaxResults(10);
$videoFeed = $yt->getUserUploads( NULL, $query );

print '

    '; foreach($videoFeed as $video): print '
  1. ' . $video->title . '
  2. '; endforeach; print '
';

Проблема, я не могу сделать $query-> setUser('bbc').

Я попробовал setAuthor, но это возвращает полностью другой результат.

Идеально, я хочу использовать метод запроса захватить результаты нумеровавшим страницы способом.

Как я использую метод $query для установления моих пределов для разбиения на страницы?

Спасибо.

6
задан Charles 30 March 2011 в 22:26
поделиться

2 ответа

Я в основном решил эту проблему так же, как и worchyld, с небольшим поворотом:

    $username = 'ignite';
    $limit = 30;  // Youtube will throw an exception if > 50
    $offset = 1;  // First video is 1 (silly non-programmers!)
    $videoFeed = null;
    $uploadCount = 0;
    try {
        $yt = new Zend_Gdata_YouTube();
        $yt->setMajorProtocolVersion(2);
        $userProfile = $yt->getUserProfile($username);
        $uploadCount = $userProfile->getFeedLink('http://gdata.youtube.com/schemas/2007#user.uploads')->countHint;

        // The following code is a dirty hack to get pagination with the YouTube API without always starting from the first result
        // The following code snippet was copied from Zend_Gdata_YouTube->getUserUploads();
        $url = Zend_Gdata_YouTube::USER_URI .'/'. $username .'/'. Zend_Gdata_YouTube::UPLOADS_URI_SUFFIX;
        $location = new Zend_Gdata_YouTube_VideoQuery($url);
        $location->setStartIndex($offset);
        $location->setMaxResults($limit);
        $videoFeed = $yt->getVideoFeed($location);
    } catch (Exception $e) {
        // Exception handling goes here!
        return;
    }

API Zend YouTube кажется глупым, поскольку включенный метод getUserUploads никогда не возвращает экземпляр VideoQuery до того, как он фактически получает фид, и хотя вы можете передать объект местоположения в качестве второго параметра, это ситуация "или-или" - он будет использовать только параметр имени пользователя для построения базового uri или только использовать местоположение, где вам придется строить все это самостоятельно (как описано выше).

3
ответ дан 16 December 2019 в 21:38
поделиться

Я решил просто использовать фид загрузок пользователей как способ заставить работать разбиение на страницы. http: // gdata.youtube.com/feeds/api/users/bbc/uploads/?start-index=1&max-results=10

Если есть способ использовать метод запроса / поиска для выполнения аналогичной работы, было бы интересно исследовать.

5
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: