I've restapi with pagination and I need to combine the result for sitemap.
Json Results
{
...
"info": {
"playlistId":"PLxxxxx",
"totalResults": 242,
"maxResults": 50,
"nextToken": "CCAAQ"
},
"results": [
{
"id": 1,
"title": "How to make a Cookies",
}
...
]
}
I've trying with below code, but still no luck. lot of duplicate video. I don't know what's wrong with this. I've try use promise too, but the results still duplicated.
...
$requests = [];
foreach ($playlists['playlistId'] as $playlistId) {
if (!empty($playlistId)) {
$result = $client->request('GET', route('api.playlist', ['playlistId' => $playlistId]));
$guzzle = \GuzzleHttp\json_decode($result->getBody(), true);
...
$pages = ceil($total_posts / $max_per_page);
for ($i = 0; $i <= $pages; $i++) {
$pageToken = Helper::youtubeToken();
$requests[] = new GuzzleRequest('GET', route('api.playlist', ['playlistId' => $playlistId, 'page' => $pageToken[$i]]));
}
}
}
$responses = Pool::batch($client, $requests, array(
'concurrency' => 1000,
));
foreach ($responses as $response) {
//do something
$respon = \GuzzleHttp\json_decode($response->getBody(), true);
if ($respon['info']['playlistId']) {
$filename = $respon['info']['playlistId'];
$nextToken = $respon['info']['nextToken'];
$sitemap = Sitemap::create();
foreach ($respon['results'] as $hasil) {
$slug = ApiController::make_slug($hasil['title']);
if (!empty($nextToken)) {
$sitemap->add();
...
}
}
$sitemap->writeToFile("$playlistPath/$filename.xml");
}
}
I need to get all of the results list and filtered by playlistId.
Thanks in advance.
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire