SPIP-Contrib

SPIP-Contrib

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

288 Plugins, 197 contribs sur SPIP-Zone, 162 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

3 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 15 juillet à 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

  • GIS 4

    11 août 2012 – 1417 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • Plugin Domlang : Domaines par secteur de langue

    4 septembre – commentaires

    Domlang est un plugin qui permet d’associer un nom de domaine ou un sous-domaine à un secteur de langue. Ce plugin convient pour un site qui utilise des secteurs de langues. En configuration, pour chaque secteur, vous pourrez définir une URL (...)

  • Menu de langues sous forme de liens

    30 novembre 2009 – 121 commentaires

    Par défaut, le menu de langue de SPIP s’affiche : Sous la forme d’une liste déroulante ; En affichant toutes les langues du site, qu’elles soient utilisées ou non (c’est à même si elles ne sont pas affectées à au moins un article ou une rubrique) ; Sans (...)

  • Agenda 2.0

    3 novembre 2008 – 1098 commentaires

    Voici la version pour SPIP 2.0 du Plugin Agenda pour SPIP 1.9.2, avec une interface remaniée pour encore plus de plaisir. Pour une documentation concernant l’utilisation d’Agenda 3 pour SPIP 3, veuillez pour l’instant vous référer à SPIP 3, Agenda (...)

  • Mailsubscribers

    16 janvier 2013 – 332 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes de (...)