2016-03-20 3 views
4

I Suche api für youtube bin mit:Youtube Daten api v3 nicht wie erwartet funktioniert

https://developers.google.com/youtube/v3/docs/search/list

ich insgesamt 40191 Datensätze und pro Seite habe ich gesetzt max 50.

Aber ich 17 Ergebnisse jedes Mal.

Dies sind die Optionen, die ich für immer Aufzeichnungen bin mit:

// SET OPTIONS FOR API 
$optionsArray = array(
     'q' => $_GET['q'], 
     'maxResults' => 50, 
     'order' => 'date', 
     'type' => 'video' 
    ); 

// Send request 
$searchResponse = $youtube->search->listSearch('id, snippet', $optionsArray); 

Auch Einstellung pageToken nicht funktioniert. Die Datensätze sind auch nach dem Anwenden nextPageToken gleich. Fehle ich hier etwas?

+0

Was Sie vorbei an 'q'? – itzmukeshy7

+0

@ itzmukeshy7 Schlüsselwort. – Shreejibawa

+0

genauer Wert von 'q'? Können Sie den gesamten Code (mit entferntem API-Schlüssel) anzeigen? –

Antwort

2

Der Grund, warum Sie nur 17 Ergebnisse erhalten, ist die order Eigenschaft Ihrer Anfrage. Wenn Sie diese Eigenschaft entfernen, erhalten Sie viel mehr Ergebnisse. Die order='date' funktioniert nicht wie erwartet.

Ein wenig Abhilfe (nur Beispiel):

$DEVELOPER_KEY = 'THEKEY'; 
$client = new Google_Client(); 
$client->setDeveloperKey($DEVELOPER_KEY); 

//Define an object that will be used to make all API requests. 
$youtube = new Google_Service_YouTube($client); 

try { 
    // Call the search.list method to retrieve results matching the specified 
    // query term. 
    $searchResponse = $youtube->search->listSearch('id,snippet', array(
     'q' => $_GET['q'], 
     'maxResults' => $_GET['maxResults'], 
     'type' => 'video' 
    )); 

    function sortResponse($date1, $date2) { 
     $date1 = new DateTime($date1['snippet']['publishedAt']); 
     $date2 = new DateTime($date2['snippet']['publishedAt']); 
     //"<" - sort DESC 
     //">" - sort ASC 
     return $date1 < $date2; 
    } 

    $items = $searchResponse['items']; 
    usort($items, "sortResponse"); 

    //now your sorted items are in $items... 
} 

können Sie alle Ihre repsonse Elemente in einem Array zusammenführen und die benutzerdefinierte Sortierfunktion verwenden, um die Reihenfolge von publishAt zu bekommen.

API Dokument:
https://developers.google.com/youtube/v3/docs/search/list?hl=de#parameters

Verwandte Frage:
When I use order-date in youtube api then there are total results but items are not found

+0

manuell sortieren seine letzte Sache, die ich will. – Shreejibawa

+0

ja Ich verstehe dein Problem, aber die 'Bestellung = Datum' funktioniert nicht wie erwartet. Wenn Sie die Videos nach einem Datum sortieren möchten, ist dies die einzige Lösung, die ich kenne, um dies zu tun. aber der Grund, warum Sie nur 17 Ergebnis erhalten, ist 'bestellen = Datum ', wenn Sie alle von ihnen sehen möchten, müssen Sie es entfernen. –

+0

okay. Danke. – Shreejibawa