SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

290 Plugins, 198 contribs sur SPIP-Zone, 99 visiteurs en ce moment

Accueil > Squelettes > Tutoriels pour squelettes > Boucle (DATA) avec l’API Youtube

Boucle (DATA) avec l’API Youtube

25 août 2014 – par Mathieu – commentaires

4 votes

Les boucles (DATA) et les itérateurs sont bien pratiques. Ils vont permettre à Spip de boucler sur des sources externes à la base de données du site (fichiers externes, API, etc...).

Voila un exemple de boucle pour lister les dernières vidéos (ici les 2 dernières) d’une chaine Youtube, en utilisant l’api Google Youtube V3 et la boucle DATA.

Pré-requis :

Bon à savoir : L’API Youtube retourne des objets au format Json, on va donc utiliser l’itérateur du même nom.

La boucle « BOUCLE_youtube » va retourner les 2 dernières vidéos de la chaine Youtube. Dans la source, il faut remplacer CLE_API_GOOGLE par votre cle API Google et ID_CHAINE_YOUTUBE par l’identifiant de la chaine Youtube.

La boucle « BOUCLE_youtube_details » va retourner toutes les infos sur une vidéos (miniature, titre, durée...). Dans la source, il faut remplacer CLE_API_GOOGLE par votre cle API Google.

  1. <B_youtube>
  2. <ul>
  3.     <BOUCLE_youtube(DATA)
  4.     {source json,'https://www.googleapis.com/youtube/v3/search?key=CLE_API_GOOGLE&channelId=ID_CHAINE_YOUTUBE&part=id&order=date&maxResults=2'}
  5.     {datapath /items}
  6.     {0,2}
  7.    >
  8.     <li>
  9.         <BOUCLE_youtube_details(DATA){source json,#VAL{'https://www.googleapis.com/youtube/v3/videos?key=CLE_API_GOOGLE&part=snippet,contentDetails&id='}|concat{#VALEUR{id}|get_object_vars|table_valeur{videoId}}}
  10.        {datapath /items}
  11.         {0,1}
  12.         >
  13.         <ul>
  14.                 [<li class="video_image"><a href="http://www.youtube.com/watch?v=#VALEUR{id}" rel="external"><img src="(#VALEUR{snippet}|get_object_vars|table_valeur{thumbnails}|get_object_vars|table_valeur{standard}|get_object_vars|table_valeur{url})" alt="" /></a></li>]
  15.             [<li class="video_titre">(#VALEUR{snippet}|get_object_vars|table_valeur{title})</li>]
  16.             <li class="video_duree">[(#VALEUR{contentDetails}|get_object_vars|table_valeur{duration}|match{(\d+)H}|replace{'H',''}):][(#VALEUR{contentDetails}|get_object_vars|table_valeur{duration}|match{(\d+)M}|replace{'M',''})][:(#VALEUR{contentDetails}|get_object_vars|table_valeur{duration}|match{(\d+)S}|replace{'S',''})]</li>
  17.         </ul>
  18.         </BOUCLE_youtube_details>
  19.     </li>
  20.     </BOUCLE_youtube>
  21. </ul>
  22. </B_youtube>
  23. <//B_youtube>

Télécharger

Comme l’API retourne des objets et non des tableaux, on est obligé de passer par la fonction php get_object_vars() pour récupérer les valeurs.

Les informations sur le format des données retournées est disponible ici : https://developers.google.com/youtube/v3/docs/videos

Attention : il faut avoir l’extension Php Openssl activé sur votre serveur.

Dernière modification de cette page le 26 août 2014

Retour en haut de la page

Vos commentaires

  • Le 22 août à 12:02, par Fred En réponse à : Boucle (DATA) avec l’API Youtube

    Bonjour, cela fonctionne en effet très bien mais que doit-on adapter pour non pas reprendre le contenu d’une chaîne mais d’une playlist ? Merci.

    Répondre à ce message

  • Le 14 janvier à 17:08, par bob55 En réponse à : Boucle (DATA) avec l’API Youtube

    Excellent ! Marche très bien. Merci pour cette contribution très utile et pour les modifications concernant get_object_vars().

    Répondre à ce message

  • Le 15 juillet 2017 à 19:20, par xavier_bs En réponse à : Boucle (DATA) avec l’API Youtube

    Remarquable contribution pour comprendre l’utilisation concrète des boucles DATA, et très bonne remarque de eidôlon concernant les get_object_vars. Le code fonctionne nickel.

    Répondre à ce message

  • Le 1er juin 2015 à 12:06, par eidôlon En réponse à : Boucle (DATA) avec l’API Youtube

    Salut, merci pour l’exemple j’ai dû faire les modifications suivantes pour le faire fonctionner :

    -  suppression des get_object_vars()
    -  la ligne

    1. <img src="(#VALEUR{snippet}|get_object_vars|table_valeur{thumbnails}|get_object_vars|table_valeur{standard}|get_object_vars|table_valeur{url})" alt="" />

    devient

    1. [<img src="(#VALEUR{snippet}|table_valeur{thumbnails}|table_valeur{high}|table_valeur{url})" class="img-responsive" alt="" />]

    valeurs possibles pour thumbnails : object

    Valid key values are :
    default – The default thumbnail image for this resource. The default thumbnail for a video – or a resource that refers to a video, such as a playlist item or search result – is 120px wide and 90px tall. The default thumbnail for a channel is 88px wide and 88px tall.
    medium – A higher resolution version of the thumbnail image. For a video (or a resource that refers to a video), this image is 320px wide and 180px tall. For a channel, this image is 240px wide and 240px tall.
    high – A high resolution version of the thumbnail image. For a video (or a resource that refers to a video), this image is 480px wide and 360px tall. For a channel, this image is 800px wide and 800px tall.

    API YouTube

    Répondre à ce message

  • Le 24 septembre 2014 à 11:07, par freedfromparis En réponse à : Boucle (DATA) avec l’API Youtube

    Excellent article !!! Merci !

    Je chercher à faire un truc un peu plus sioux, je voudrais faire un peu comme le système de syndication c’est à dire proposer de créer des articles à chaque nouvelle vidéo postée sur une chaine Youtube

    Une idée de comment faire cela ?

    Merci d’avance.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Galleria (fr)

    16 novembre 2011 – 197 commentaires

    Une galerie d’image qui utilise la librairie javascript Galleria. Description Ce plugin vous permet d’ajouter des galeries d’images à vos articles. La galerie créée utilise la librairie javascript Galleria. Le plugin propose un modèle nommé (...)

  • Responsive Nav

    9 avril 2016 – 18 commentaires

    Un menu responsive dans vos squelettes Adaptation du plugin Responsive Nav pour SPIP. Installation Ce plugin s’installe comme tous les plugins. Voir http://www.spip.net/fr_article3396.html Il fonctionne avec le squelette dist par défaut (...)

  • cibloc : mettre en forme le texte d’articles avec des blocs

    9 juillet – 21 commentaires

    Le plugin CIBLOC permet de mettre en forme le texte d’articles avec des blocs. Il offre des blocs, des colonnes, des icônes et des boutons. Les objectifs de ce plugin Le plugin CIBLOC offre des blocs, des colonnes, des icônes et des boutons : (...)

  • spiPDF : générer des contenus sur mesure en PDF

    16 février 2011 – 240 commentaires

    Le plugin spiPDF génère des fichiers au format PDF d’article ou de tout autre élément SPIP, simplement à partir d’un squelette construit au format HTML 4 et facile à modifier. Avertissement de sécurité Ce plugin a fait l’objet d’une faille de sécurité (...)

  • Hébergeurs payants

    24 janvier 2009 – 35 commentaires

    Cet article en encore à réorganiser / scinder en deux selon le type (mutualisé ou pro). À priori, SPIP fonctionnera sur tout hébergeur payant traditionnel (qui propose PHP et MySQL). Merci de ne pas mettre des remarques du genre « l’hébergeur truc (...)