Bonjour, je vous écrit car j'ai un soucis avec l'api youtube, je veux récupérer toutes les vidéos d'un "channel" qui dure plus de 20 min, donc comme tout bon développeur Web, je regarde la doc de l'api pour faire une recherche Texte du lien

Et je vois que si tu met le paramètre "videoDuration" à "long" il me récupère les vidéos qui ont une durée de plus de 20 min.

Mais sa fonctionne pas du tout et je n'ai aucune idée pourquoi et google me dit rien sur ce problème. donc je me tourne vers vous.

voila un peu de code pour éviter l'ennuie.

<?php 
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_YoutubeService.php';
$DEVELOPER_KEY = 'PAS TOUCHE';
$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);
$youtube= new Google_YoutubeService($client);
$response = $youtube->search->listSearch('id, snippet', array(
    'channelId' => 'UCKv-KgFIYK4lLsfquLwh0zg',
    'videoDuration' => 'long', 
    'maxResults' => '50',
));
?>
<?php foreach ($response'items'] as $k => $v): ?>
    <pre>
        <?php print_r($v) ?>
    </pre>
<?php endforeach ?>

le message d'erreur

Fatal error: Uncaught exception 'Google_ServiceException' with message 'Error calling GET https://www.googleapis.com/youtube/v3/search?part=id%2C%20snippet&channelId=UCKv-KgFIYK4lLsfquLwh0zg&videoDuration=long&maxResults=50&key=AIzaSyA2rzYBSJByXh0oNG-YnuX4QMivdg2nY_U: (400) Invalid combination of search filters and/or restrictions.'

Merci pour vos réponse.

ps : si on enlève le "videoDuration" cela fonctionne parfaitement.

1 réponse


Ch0c4
Auteur
Réponse acceptée

Bon j'ai trouvé la solution il faut rajouté le paramètre 'type' à 'video' dans la requête car il peut te retourner une 'playlist' ou un 'channel' qui eux n'ont pas de durée, je reposte mon code pour ceux qui n'ont pas suivi

<?php 
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_YoutubeService.php';
$DEVELOPER_KEY = 'TU REVE';
$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);
$youtube= new Google_YoutubeService($client);
$response = $youtube->search->listSearch('id, snippet', array(
    'channelId' => 'UCKv-KgFIYK4lLsfquLwh0zg',
    'videoDuration' => 'long', 
    'type' => 'video',
    'maxResults' => '50',
));
?>
<?php foreach ($response'items'] as $k => $v): ?>
    <pre>
        <?php print_r($v) ?>
    </pre>
<?php endforeach ?>

Merci à moi