I am using search api for youtube :
https://developers.google.com/youtube/v3/docs/search/list
I get total of 40191 records and per page I have set max 50.
But I get 17 results every time.
These are the options I am using for getting records:
// SET OPTIONS FOR API
$optionsArray = array(
'q' => $_GET['q'],
'maxResults' => 50,
'order' => 'date',
'type' => 'video'
);
// Send request
$searchResponse = $youtube->search->listSearch('id, snippet', $optionsArray);
Also setting pageToken doesnt work. Records are same even after applying nextPageToken. Am I missing something here?
1 Answer 1
The reason why you get only 17 results is the order property of your request. If you remove this property you get many more results. The order='date' is not working as expected.
A little workaround (only example):
$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...
}
You can merge all your repsonse items in one array and use the custom sort function to get the order by publishAt.
API Document:
https://developers.google.com/youtube/v3/docs/search/list?hl=de#parametersRelated Question:
When I use order-date in youtube api then there are total results but items are not found
q?q? Can you show the whole code (with removed API key)?