IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête php api youtube


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2022
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2022
    Messages : 42
    Par défaut Requête php api youtube
    Bonjour, j'essaye de récupérer la dernière vidéo d'une page youtube sur ma page web, en local déjà. Je veux que quand une nouvelle vidéo est postée sur cette page youtube, elle s'affiche sur mon site quand je le recharge.
    Je n'ai actuellement plus de messages d'erreurs mais rien ne s'affiche dans ma page web. J'ai fait la procédure pour avoir une clé api de l'api youtube sur google dev. Avant j'affichais moi même une vidéo du moment mais je souhaite l'automatiser.
    Avez vous des suggestions?
    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    $username = 'username';
    $apiKey = 'token';
     
    $activitiesUrl = "https://www.googleapis.com/youtube/v3/activities?part=snippet,contentDetails&channelId=$username&maxResults=1&key=$apiKey";
     
    $curl = curl_init($activitiesUrl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($curl);
    curl_close($curl);
     
    $activitiesData = json_decode($response);
     
    if (isset($activitiesData->items) && count($activitiesData->items) > 0) {
      $videoId = $activitiesData->items[0]->contentDetails->upload->videoId;
      $videoTitle = $activitiesData->items[0]->snippet->title;
      $videoDescription = $activitiesData->items[0]->snippet->description;
      $videoThumbnail = $activitiesData->items[0]->snippet->thumbnails->default->url;
     
      // Générer le code HTML pour afficher la vidéo
      $html = '<div class="video-responsive>';
      $html .= '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . $videoId . '" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>';
      $html .= '</div>';
     
      // Afficher le code HTML
      echo $html;
    }
    ?>
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div class="containerbis">
                  <?php include("youtube.php"); ?>
                </div>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    class="video-responsive, il manque des guillemets " à la fin, c'est probablement la raison pour laquelle la vidéo ne s'affiche pas correctement.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2022
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2022
    Messages : 42
    Par défaut
    Merci pour les ". Mais j'ai la même erreur où je bloque maintenant

    j'obtiens Erreur
    Curl : 3 -
    cURL n'a pas pu résoudre l'adresse de l'URL spécifiée dans la requête.
    (Le $ est bien présent, quand je le copie dans des balises code php ici il se transforme en %24)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
     
    $username = 'username';
     
    $apiKey = 'apikey';
     
     
    $activitiesUrl = "https://www.googleapis.com/youtube/v3/activities?part=snippet%2CcontentDetails&channelId=%24username&maxResults=1&key=%24apiKey";
     
     
    $curl = curl_init($activitiesUrl);
     
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
     
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     
     
    $response = curl_exec($curl);
     
     
    if ($response === false) {
     
         echo 'Erreur Curl : ' . curl_errno($curl) . ' - ' . curl_error($curl);
     
    } else {
     
        var_dump($response);
     
     
        curl_close($curl);
     
     
        $activitiesData = json_decode($response);
     
     
        if (isset($activitiesData->items) && count($activitiesData->items) > 0) {
     
            $videoId = $activitiesData->items[0]->contentDetails->upload->videoId;
     
            $videoTitle = $activitiesData->items[0]->snippet->title;
     
            $videoDescription = $activitiesData->items[0]->snippet->description;
     
            $videoThumbnail = $activitiesData->items[0]->snippet->thumbnails->default->url;
     
     
            // Générer le code HTML pour afficher la vidéo
     
            $html = '<div class="video-responsive">';
     
            $html .= '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . $videoId . '" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>';
     
            $html .= '</div>';
     
     
            // Afficher le code HTML
     
            echo $html;
     
        }
     
    }
     
    ?>
    En mettant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $activitiesUrl = "https://www.googleapis.com/youtube/v3/activities?part=snippet%2CcontentDetails&channelId=" . urlencode($username) . "&maxResults=1&key=" . urlencode($apiKey);
    J'obtiens l'erreur:
    string(264) "{ "error": { "code": 403, "message": "The request is not properly authorized.", "errors": [ { "message": "The request is not properly authorized.", "domain": "youtube.activity", "reason": "forbidden" } ] } } "

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    j'ai testé ceci en utilisant les identifiants de ma chaîne YouTube sur localhost et je récupère bien les 5 dérnières vidéos :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    $channelId = 'id de la chaîne...';
    $apiKey = 'Api Key....';
    $activitiesUrl = "https://www.googleapis.com/youtube/v3/activities?part=snippet,contentDetails,id&channelId=$channelId&maxResults=5&key=$apiKey&format=json";
    $curl = curl_init($activitiesUrl);
     
    /*Seulement sur localhost :
    Désactiver la vérification du host et le certificat
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    */
     
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $response=curl_exec($curl);
    if($response === false)
    {
        echo 'Curl error: ' . curl_error($curl);
    }
    else
    {
        echo 'Operation completed without any errors'."\n\r";
        $activitiesData =json_decode($response);
        $html="";
        if (isset($activitiesData->items) && count($activitiesData->items) > 0) {
    	foreach($activitiesData->items as $index=>$item){
    		$videoId = $item->contentDetails->upload->videoId;
    		$videoTitle = $item->snippet->title;
    		$videoDescription = $item->snippet->description;
    		$videoThumbnail = $item->snippet->thumbnails->default->url;
     
    		// Générer le code HTML pour afficher la vidéo
    		$html .= '<div class="video-responsive">';
    		$html .= '<iframe width="560" height="315" src="https://www.youtube.com/embed/' . $videoId . '" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>';
    		$html .= '</div>';
    	}
    	// Afficher le code HTML
    	echo $html;
        }
    }
    curl_close($curl);
    Les deux lignes commentées c'est seulement sur localhost, sinon sur un serveur en ligne vous devez les décommenter et créer un certificat bien sûr.
    Vous devriez vous assurez aussi que l'API YouTube v3 est activée sur votre compte.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2022
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2022
    Messages : 42
    Par défaut
    Merci. Avec tes instructions je rentre dans "l'opération complétée sans erreurs", mais je n'arrive pas à afficher la dernière vidéo de la page youtube souhaitée.

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    Qu'est ce que vous voyez lorsque vous inspectez la page html ? est-ce que le <div class="video-responsive"> est généré ou pas ?

Discussions similaires

  1. Requête HTTP en PHP - API Ebay
    Par denimb dans le forum Langage
    Réponses: 4
    Dernier message: 13/02/2018, 17h37
  2. [Conception] Résultat d'une requête PHP dans un tableau avec lien ?
    Par DjMaC dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/04/2006, 20h37
  3. Aide php api
    Par pascal57 dans le forum Langage
    Réponses: 2
    Dernier message: 12/03/2006, 01h34
  4. [MySQL] Ma requête php n'effectue pas la modification
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 01/03/2006, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo