data Youtube

Bonjour,

Me revoili.
Après la boucle data dbpedia, je souhaiterais mettre en place une
boucle data sur Youtube.

J'ai trouvé ce bout de code qui pointe une playlist qui marche bien.

#SET{flux, #VAL{https://www.youtube.com/feeds/videos.xml?playlist_id=PLGKrsUcp0Y0TmSX8OE_M-JYGPlDPtL49g}|copie_locale
}
<B_yt>
<ul>
<BOUCLE_yt(DATA){source simplexml, #GET{flux}}{datapath root/children/entry}>
  [<li>(#VALEUR{children/link/0/attributes/href})</li>]
</BOUCLE_yt>
</ul>
</B_yt>

Je souhaiterais pouvoir afficher des vidéos en interrogeant
directement Youtube mais ne sais comment remplacer
?playlist_id=PLGKrsUcp0Y0TmSX8OE_M-JYGPlDPtL49g
par
search_query=texte+texte

D'avance merci,
Bernard

Bonjour,

j'ai fait face à un problème similaire récemment: afficher les dernières vidéos pour un user donné. Pour cela, je passe par l'API de youtube qui permet pas mal d'opérations, mais il faut commencer par créer une clef en créant un projet dans : https://console.developers.google.com/apis/ lié a un compte existant.

Une fois cette clef crée, il est possible d'utiliser les API :

Avec channels.list :
https://developers.google.com/youtube/v3/docs/channels/list
on peut obtenir la liste des canaux associés a un compte.

Ensuite avec :
https://developers.google.com/youtube/v3/docs/videos/list
on peut récupérer une liste des dernières vidéos pour un canal donné.

Dans ton cas, ce sera plutôt :
https://developers.google.com/youtube/v3/docs/search/list

qui va t'intéresser.

Ex ( testé avec ma propre clef API ) :
https://www.googleapis.com/youtube/v3/search?key={la clef API}&part=snippet,id&order=date&maxResults=10&type=video&q=spip

Ensuite ça crache du json et il faudra donc en faire qqc avec une boucle data genre :

<BOUCLE_json(DATA){source json,"https://www.googleapis.com/youtube/v3/search?key={la clef API}&part=snippet,id&order=date&maxResults=10&type=video&q=spip"}{datapath items}>

[(#REM)<p>[<pre>(#VALEUR|print_r{true})</pre>]</p> ]

<p>[videoId: (#VALEUR|table_valeur{id}|table_valeur{videoId}) ]</p>
<p>[<a target='_blank' href='https://www.youtube.com/watch?v=(#VALEUR|table_valeur{contentDetails}|table_valeur{videoId})'>[(#VALEUR|table_valeur{snippet}|table_valeur{title}) ]</a>]</p>
<p>[channelId: (#VALEUR|table_valeur{snippet}|table_valeur{channelId}) ]</p>
<p>[title: (#VALEUR|table_valeur{snippet}|table_valeur{title}) ]</p>
<p>[<pre>description: (#VALEUR|table_valeur{snippet}|table_valeur{description}) </pre>]</p>
<p>[videoId: (#VALEUR|table_valeur{contentDetails}|table_valeur{videoId}) ]</p>

<BOUCLE_th(DATA){source table, #VALEUR|table_valeur{snippet}|table_valeur{thumbnails}|get_object_vars}{3,1}>[(#SET{placeholder,[(#VALEUR|table_valeur{url})]})]
[(#REM)[<img src='(#VALEUR|table_valeur{url})'>]]
</BOUCLE_th>

[(#SET{vidid,[(#VALEUR|table_valeur{contentDetails}|table_valeur{videoId})]})]
[(#SET{idplayer,video#COMPTEUR_BOUCLE})]
#GET{idplayer}

[(#REM)<img src='#GET{placeholder}'/>]

[(#REM) dans ce bout, il faut adapter car j'utilise du js pour remplacer le contenu de la div par un player lors d'un clic. ]
<div id='ctnt-#GET{idplayer}'><div class='player' id='#GET{idplayer}' data-video='#GET{vidid}' style='background-image:url(#GET{placeholder})'></div></div>

<hr/>
</BOUCLE_json>
-
<//B_json>

Voila voila :slight_smile:

Merci Vincent. J’avais déjà créé une clé. Je vais regarder avec attention tes proposition ce week-end.

Encore merci,
Bernard

Le 14 Avr. 2016 09:34, « Vincent » <vincent@logaweb.fr> a écrit :

Bonjour,

j’ai fait face à un problème similaire récemment: afficher les dernières vidéos pour un user donné. Pour cela, je passe par l’API de youtube qui permet pas mal d’opérations, mais il faut commencer par créer une clef en créant un projet dans : https://console.developers.google.com/apis/ lié a un compte existant.

Une fois cette clef crée, il est possible d’utiliser les API :

Avec channels.list :
https://developers.google.com/youtube/v3/docs/channels/list
on peut obtenir la liste des canaux associés a un compte.

Ensuite avec :
https://developers.google.com/youtube/v3/docs/videos/list
on peut récupérer une liste des dernières vidéos pour un canal donné.

Dans ton cas, ce sera plutôt :
https://developers.google.com/youtube/v3/docs/search/list

qui va t’intéresser.

Ex ( testé avec ma propre clef API ) :
https://www.googleapis.com/youtube/v3/search?key={la clef API}&part=snippet,id&order=date&maxResults=10&type=video&q=spip

Ensuite ça crache du json et il faudra donc en faire qqc avec une boucle data genre :

<BOUCLE_json(DATA){source json,« https://www.googleapis.com/youtube/v3/search?key={la clef API}&part=snippet,id&order=date&maxResults=10&type=video&q=spip »}{datapath items}>

[(#REM)

[

(#VALEUR|print_r{true})
]

]

[videoId: (#VALEUR|table_valeur{id}|table_valeur{videoId}) ]

[[(#VALEUR|table_valeur{snippet}|table_valeur{title}) ]]

[channelId: (#VALEUR|table_valeur{snippet}|table_valeur{channelId}) ]

[title: (#VALEUR|table_valeur{snippet}|table_valeur{title}) ]

[

description: (#VALEUR|table_valeur{snippet}|table_valeur{description}) 
]

[videoId: (#VALEUR|table_valeur{contentDetails}|table_valeur{videoId}) ]

<BOUCLE_th(DATA){source table, #VALEUR|table_valeur{snippet}|table_valeur{thumbnails}|get_object_vars}{3,1}>[(#SET{placeholder,[(#VALEUR|table_valeur{url})]})]
[(#REM)[]]
</BOUCLE_th>

[(#SET{vidid,[(#VALEUR|table_valeur{contentDetails}|table_valeur{videoId})]})]
[(#SET{idplayer,video#COMPTEUR_BOUCLE})]
#GET{idplayer}

[(#REM)]

[(#REM) dans ce bout, il faut adapter car j’utilise du js pour remplacer le contenu de la div par un player lors d’un clic. ]


-

Voila voila :slight_smile:


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Je viens de tester le code. C'est super
http://www.bibliosurf.com/spip.php?page=test !
Encore merci.
Bernard

Le 14 avril 2016 à 09:40, Bernard Strainchamps <bstrainc@gmail.com> a écrit :

Merci Vincent. J'avais déjà créé une clé. Je vais regarder avec attention
tes proposition ce week-end.

Encore merci,
Bernard

Le 14 Avr. 2016 09:34, "Vincent" <vincent@logaweb.fr> a écrit :

Bonjour,

j'ai fait face à un problème similaire récemment: afficher les dernières
vidéos pour un user donné. Pour cela, je passe par l'API de youtube qui
permet pas mal d'opérations, mais il faut commencer par créer une clef en
créant un projet dans : https://console.developers.google.com/apis/ lié a un
compte existant.

Une fois cette clef crée, il est possible d'utiliser les API :

Avec channels.list :
Channels: list  |  YouTube Data API  |  Google for Developers
on peut obtenir la liste des canaux associés a un compte.

Ensuite avec :
Videos: list  |  YouTube Data API  |  Google for Developers
on peut récupérer une liste des dernières vidéos pour un canal donné.

Dans ton cas, ce sera plutôt :
https://developers.google.com/youtube/v3/docs/search/list

qui va t'intéresser.

Ex ( testé avec ma propre clef API ) :
https://www.googleapis.com/youtube/v3/search?key=\{la clef
API}&part=snippet,id&order=date&maxResults=10&type=video&q=spip

Ensuite ça crache du json et il faudra donc en faire qqc avec une boucle
data genre :

<BOUCLE_json(DATA){source
json,"https://www.googleapis.com/youtube/v3/search?key=\{la clef
API}&part=snippet,id&order=date&maxResults=10&type=video&q=spip"}{datapath
items}>

[(#REM)<p>[<pre>(#VALEUR|print_r{true})</pre>]</p> ]

<p>[videoId: (#VALEUR|table_valeur{id}|table_valeur{videoId}) ]</p>
<p>[<a target='_blank'
href='https://www.youtube.com/watch?v=(#VALEUR|table\_valeur\{contentDetails\}|table\_valeur\{videoId\}\)&#39;&gt;\[(#VALEUR|table_valeur{snippet}|table_valeur{title})
]</a>]</p>
<p>[channelId: (#VALEUR|table_valeur{snippet}|table_valeur{channelId})
]</p>
<p>[title: (#VALEUR|table_valeur{snippet}|table_valeur{title}) ]</p>
<p>[<pre>description:
(#VALEUR|table_valeur{snippet}|table_valeur{description}) </pre>]</p>
<p>[videoId: (#VALEUR|table_valeur{contentDetails}|table_valeur{videoId})
]</p>

<BOUCLE_th(DATA){source table,
#VALEUR|table_valeur{snippet}|table_valeur{thumbnails}|get_object_vars}{3,1}>[(#SET{placeholder,[(#VALEUR|table_valeur{url})]})]
[(#REM)[<img src='(#VALEUR|table_valeur{url})'>]]
</BOUCLE_th>

[(#SET{vidid,[(#VALEUR|table_valeur{contentDetails}|table_valeur{videoId})]})]
[(#SET{idplayer,video#COMPTEUR_BOUCLE})]
#GET{idplayer}

[(#REM)<img src='#GET{placeholder}'/>]

[(#REM) dans ce bout, il faut adapter car j'utilise du js pour remplacer
le contenu de la div par un player lors d'un clic. ]
<div id='ctnt-#GET{idplayer}'><div class='player' id='#GET{idplayer}'
data-video='#GET{vidid}'
style='background-image:url(#GET{placeholder})'></div></div>

<hr/>
</BOUCLE_json>
-
<//B_json>

Voila voila :slight_smile:

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Ok. Je vais regarder cela.

Re,

en fait, cela dépend: youtube peut fournir plusieurs images pour une même vidéo. A vue de nez, j’aurais tendance à penser que cela dépend des résolutions disponibles.
Donc à ce niveau, il faut adapter selon les besoins.

Toujours à vue de nez, cela semble aller systématiquement dans l’ordre croissant, donc en supprimant le : « {3,1} » de la boucle on les parcoure toutes et on reste donc sur la plus grande. Ceci dit, pour bien comprendre ce qui se passe sous le capot, le mieux reste de dé-commenter
[(#REM)

[

(#VALEUR|print_r{true})
]

]

[
(#VALEUR|print_r{true})
]

pour voir la tronche de base du json: tout le code est basé dessus.

Ensuite, la boucle contient elle aussi du code commenté pour les exemples de débug :
[(#REM)[]]

[]

Cela permet d’afficher les images qui sont pêchées par la boucle.

Alain,
Je vais plutôt utiliser un code responsive comme ici
Marc Villard : Focus vidéo sur Métroland.
Cordialement,
Bernard

Le 14 avril 2016 à 18:22, DESCOUBES Alain <descoubes.alain@bbox.fr> a écrit :

Bonjour,

Voir le site

http://www.vince-pong.fr/

il y a un lien sur Youtube mais il est fixe. Le code est

<iframe style="width: 100%; height: 350px; overflow: hidden;"
src="YouTube
<view-source:YouTube; " frameborder="0"
allowfullscreen></iframe>

Si cela peut être utile.
Bonne chance

Alain

Le 13/04/16 14:24, « Bernard Strainchamps » <bstrainc@gmail.com> a écrit :

Bonjour,

Me revoili.
Après la boucle data dbpedia, je souhaiterais mettre en place une
boucle data sur Youtube.

J'ai trouvé ce bout de code qui pointe une playlist qui marche bien.

#SET{flux,
#VAL{https://www.youtube.com/feeds/videos.xml?playlist_id=PLGKrsUcp0Y0TmSX8OE_
M-JYGPlDPtL49g}|copie_locale
}
<B_yt>
<ul>
<BOUCLE_yt(DATA){source simplexml, #GET{flux}}{datapath root/children/entry}>
  [<li>(#VALEUR{children/link/0/attributes/href})</li>]
</BOUCLE_yt>
</ul>
</B_yt>

Je souhaiterais pouvoir afficher des vidéos en interrogeant
directement Youtube mais ne sais comment remplacer
?playlist_id=PLGKrsUcp0Y0TmSX8OE_M-JYGPlDPtL49g
par
search_query=texte+texte

D'avance merci,
Bernard
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

J'ai juste un petit hic.
Je n'arrive pas à placer un #GET{video} dans la boucle DATA.
Y-aurait-il une solution ?
D'avance merci.
Bernard presque au but.

<BOUCLE_json(DATA){source
json,"https://www.googleapis.com/youtube/v3/search?key=AIzaSyDopd4AEnLa4sYvUpB6q9_qwhJoPbMkNGc&part=snippet,id&order=date&maxResults=3&type=video&q=#GET\{video\}&quot;\}{datapath
items}>

Le 14 avril 2016 à 17:28, Vincent <vincent@logaweb.fr> a écrit :

Re,

en fait, cela dépend: youtube peut fournir plusieurs images pour une même
vidéo. A vue de nez, j'aurais tendance à penser que cela dépend des
résolutions disponibles.
Donc à ce niveau, il faut adapter selon les besoins.

Toujours à vue de nez, cela semble aller systématiquement dans l'ordre
croissant, donc en supprimant le : "{3,1}" de la boucle on les parcoure
toutes et on reste donc sur la plus grande. Ceci dit, pour bien comprendre
ce qui se passe sous le capot, le mieux reste de dé-commenter
[(#REM)<p>[<pre>(#VALEUR|print_r{true})</pre>]</p> ]
->
[<pre>(#VALEUR|print_r{true})</pre>]

pour voir la tronche de base du json: tout le code est basé dessus.

Ensuite, la boucle contient elle aussi du code commenté pour les exemples de
débug :
[(#REM)[<img src='(#VALEUR|table_valeur{url})'>]]
->
[<img src='(#VALEUR|table_valeur{url})'>]

Cela permet d'afficher les images qui sont pêchées par la boucle.