Question

Je veux saisir les ajouts d'un utilisateur. (Ex: BBC) et limiter la sortie à 10 par page

Alors que je peux utiliser l'URL suivante: http://gdata.youtube. com / feeds / api / utilisateurs / bbc / uploads /? start-index = 1 & max = 10-résultats

Les travaux ci-dessus bien.

Je veux utiliser la méthode de requête à la place:

Le Zend Framework docs: http://framework.zend.com/manual/en/zend.gdata .youtube.html

Etat que je peux récupérer des vidéos téléchargées par un utilisateur, mais idéalement je veux utiliser la méthode de requête pour limiter les résultats pour une pagination.

La méthode de requête est sur la documentation de Zend Framework (même page que précédemment sous le titre «Recherche de vidéos par métadonnées) et est similaire à ceci:


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

print '<ol>'; foreach($videoFeed as $video): print '<li>' . $video->title . '</li>'; endforeach; print '</ol>';

Le problème est que je ne peux pas faire $ query-> setUser ( 'bbc').

J'ai essayé SetAuthor mais renvoie un résultat totalement différent.

Idéalement, je veux utiliser la méthode de requête pour saisir les résultats de façon paginé.

Comment puis-je utiliser la méthode de requête $ pour définir mes limites pour la pagination?

Merci.

Était-ce utile?

La solution

Je fondamentalement résolu ce problème de la même manière que worchyld avec une légère torsion:

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

L'API Zend YouTube semble stupide que la méthode getUserUploads inclus ne retourne jamais l'instance VideoQuery avant qu'elle va chercher réellement l'alimentation, et pendant que vous pouvez passer un objet emplacement comme un second paramètre, il est une situation « soit ou » - ce ll n'utilisez le paramètre nom d'utilisateur pour construire un uri de base ou seulement utiliser l'emplacement où vous devez construire tout cela vous-même (comme ci-dessus).

Autres conseils

J'ai simplement décidé d'utiliser l'upload utilisateur comme moyen se nourrissent d'obtenir travailler paginations pour. http://gdata.youtube. com / feeds / api / utilisateurs / bbc / uploads /? start-index = 1 & max = 10-résultats

S'il y a un moyen d'utiliser la méthode requête / recherche pour faire un travail similaire serait intéressant d'explorer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top