Créer une app Streamlit avec l’API TMDB
Session du 23 décembre 2024 à 21h00
Structures de Données
Bases du Langage
Développement Web & Frameworks
Librairie Standard & Modules
Deviens membre Premium
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- +100h de formations
- +180 exercices de code
- +100h de mentorats en rediffusion
- 20 projets
- Mentorats groupés hebdomadaires
- Support individuel avec nos mentors
Créer une app Streamlit avec l’API TMDB
🎄 Mentorat spécial Noël
On met en perspective datetime, urllib et JSON avec une petite appli "🎬 Les films à l'affiche" 😀.
Mise en place d'une interface avec Streamlit !
Utilisation d'une api : themoviedb.
Et dans un second temps, on va remplacer urllib pour faire une version avec la librairie requests
00:00:00 :Et voilà, c'est bon.Ah, c'est parti.Ouais.Bon, alors, on va partager l'écran déjà.Euh...Euh...Tac.L'écran.Ignoré.Et là, vous voyez mon écran.
00:00:24 :Normalement.Tout va bien.Je vais faire un petit plus ici.Voilà.OK.Bon, du coup, le but, c'est genresoit on va manipuler genreune API.
00:00:42 :Pour ça, on va utilisersi on va sur la pageje ne sais pas si on a déjà vu avec moi çaStreamlit.Je ne sais plus si on a...
00:00:52 :Ouais, tu m'en as déjà parlévite fait.On va utiliser Streamlitpour faire l'interfaceparce que j'ai pas envie de faire du HTML, j'ai pas envie de faire du CSS.
00:01:02 :Donc on va y aller vite.Et en fait,pour faire notre petite application,on va se faire en gros les filmsà l'affiche au cinéma,un peu dans ce genre.
00:01:14 :On va aller taper en fait cesTMDB...Ah, j'arrive.Ah, ça me revient.Je crois que je l'ai vu passer dansla liste de Korban.
00:01:26 :Il me semble que Korban,il avait fait un truc là-dessus.Je ne l'ai pas testé.Salut Arcel.Salut Gabriel.Salut Arcel.Salut Arcel.En fait,c'est sympa parce qu'en faitc'est...
00:01:46 :Ils mettent carrément une API à disposition.Enfin, c'est gratuit,il n'y a pas de problème. C'est une grosse base de données.On trouve pas mal de choses par rapport au cinéma.
00:01:54 :Donc c'est pas mal.Le but c'est d'alleren gros pour étudier une API,il y a une partie développeur en faitsouvent sur les sites sur une API.
00:02:08 :Je ne sais pas pour ceux qui fontdu...qui veulent se faireun pass-remix par exemple.Je n'ai plus le nom.Comment ça s'appelle pour le système de paiementque vous utilisez là ?
00:02:22 :C'est pas Streamlit ?Non, c'est de Stripe.Merci.Stripe API Dev.Souvent, vous avez toujoursune partie pour développeur avec comment ça fonctionne,ce qu'est le plan de l'API,ainsi de suite.
00:02:38 :Bien que celle de Stripe, en fait, j'ai trouvé galère à comprendre.Il y a trop de choses partout.Même si je devais rechercher un système de paiement,c'est un peu galère.
00:02:46 :Sinon,c'est là, pour notre cas ici, pour le systèmede film à la fiche.Quand vous avez une API, comme ça, c'est là, elle est très bien faite.
00:02:56 :Vous pouvez aller voir ce que vous voulez.Il y a toutes les méthodes.En fait, tous les endpointssont bien documentésavec toutes les méthodes.
00:03:06 :Du post,du get, du delete,ainsi de suite.On va rester simple.On va aller sur une méthode,un endpoint in get,qui permet d'aller récupérerles films qui sont actuellement au cinéma.
00:03:22 :Mais vous voyez qu'une API,elle est quand même sacrément énorme.Il y a des endpoints partout. Il y en a beaucoup.Donc là,je suis sur un endpoint.
00:03:32 :Un endpoint, pour ceux qui n'ont pas encore d'API,c'est, en gros, la venue RLqui va vous retourner, en fait,certaines choses.C'est diverses informations.
00:03:42 :Sauf que, les API,c'est pas tout le temps comme ça.Il faut, en fait,ce qu'on appelleun jeton, un token,qui permet de direque c'est pour s'authentifier.
00:03:56 :Donc là, en plus,sur ce site-là, c'est juste à s'inscrire,à récupérer son token. C'est complètement gratuit.Donc,on va commencer.Et on va d'abord regarderle qu'on va avoir besoin.
00:04:12 :Il faut que je source avant, d'ailleurs.J'ai mis où c'est...Bin activé. Tac.Donc, pour ça, on va installerStreamlit, comme on a vu avant.
00:04:24 :Alors, Streamlit, c'est assez lourd.Je ne le cache pas.Il n'y a pas mal de choses.Et, le reste,on va se le faire, justement, avecles librairies standards de Python.
00:04:40 :Et après,on fera une version un peu plusrapide, avec Request.Donc, en fait,avec Streamlit, on va commencersimple. On va avoir, par exemple, ici,
00:04:52 :un fichier qu'on vaappeler index.py.OK.Ça, je peux le fermer.Est-ce qu'il me détecte mon environnement virtuel ?Euh...Je ne veux pas lancer ça.
00:05:06 :Je suis allé trop vite.Je vais le lancer, en plus.Est-ce qu'il me le trouve ou pas ?Ouais, c'est bon.Donc, si je le retrouve au terminal, normalement, c'est bon.
00:05:20 :OK.Voilà. Il m'a trouvé.Et si je peux faire un trucavant, vite fait ?Est-ce que je peuxle désactiver d'ici ? Je ne sais plus.
00:05:36 :Je ne sais plus comment désactiver copilotedirectement. Je l'ai là,de toute façon, ici.Installer,désactiver copilote.OK.Hop. Et normalement,il ne va pas me proposer de faire lacompilation tout seul.
00:06:04 :Euh...C'est bon.OK. Donc là, j'ai installéStreamlits. Streamlits, c'est pour fairenos interfaces. Pour commencer, on vaimporterStreamlits.Et donc,du coup, pour accéder...
00:06:22 :Si j'ai mis mon navigateur, il est là.Euh... Il est là.Pour accéder à notre endpoint,en fait, dans une API,tout est expliqué. Vous voyez, en fait, là, je suis allé sur mon
00:06:32 :endpoint. Elle est vraiment bien faite.Et leur doc, elle est vachement cool.Parce que quand on regarde, on peut choisirle langageavec lequel on bosse. Donc là, limite,
00:06:42 :ils me mâchent tout, en fait. Eux, ils installentrequest, donc ils vous disent de l'installer. Nous, on va faire sans.Ici,je ne vous montre pas tout, mais bon,j'ai mon token, ici, qui est là.
00:06:52 :Donc, ils vous...Ils vous mettent directement votre token,mais le token, vous ne le mettez jamais...jamais brutcomme ça dans votre code. Vous le mettez dans une...
00:07:02 :dans une...un fichier d'environnement, quoi.Il ne faut pas qu'il se recommite dans vosGitHub. Et donc,euh...Donc, ils me disent là. Donc, OK,
00:07:14 :là, j'ai bien l'URL.Ici, c'est celle-là que j'ai récupérée.Sauf que vous pouvez faire des petites configurations.Par exemple, si je veux...Là, ça va être en anglais.
00:07:24 :Là, je peux récupérerle signe en français.Euh... Page, on va laisser une.On va rester basique, hein. Hop, entrer.Et là, quand on regarde,je suis bien icien langage FR.
00:07:38 :Euh...Donc, sur Tokos, je vais le régénérer. C'est pas grave.Si on le voit.Et, du coup,je vais retourner sur mon...Euh...Elle est là. Hop là.
00:07:52 :Script. Donc, ce qu'on va faire,c'est qu'on va utiliser urllib,qui est une librairie standard de...De Python pour aller...Pour s'amuser un peu, pour aller chercher un peu notre URL.
00:08:02 :Et on va pas utiliser request.Donc, il y a des produitsurllib ou pas ici ?Je connais pas. Non, non.Je vois un peu avec, mais dire que je suis un pro,c'est... C'est gros.
00:08:16 :Perso, je suis pas un grand fan.Bon, on va regarder ça, de toute façon.Euh... Et on va aller fairenotre...Notre import. De toute façon, on va faire comme ça.
00:08:26 :Donc, on vacommencer comme ça. Donc, l'URL qu'on va appeler...Donc, là, si on retourne dessus...Ah, j'aime pas penser à ça. Tac.L'URL, elle est ici.
00:08:36 :Donc, je vais allerla chercher. Tac.Je crois que j'ai tout copié, de toute façon. Hop.Euh... Voilà.Euh... Donc, je l'aiici. On va pas... On va aller
00:08:50 :récupérer...Je suis bien en langage FR.Euh... En no playing.Langage FR. Région.C'est marrant, c'est qu'ils me disent pas la région.Il y a pas la région sur le...
00:09:06 :Si. Euh...Comment on fait déjà? Tac. FR, je crois.Je sais pas. Je le fais pas. J'en sais pas.Voilà. Et je vais la recopier.
00:09:16 :Merci.Et voilà.Voilà.Voilà. Donc, voilà. J'ai bien ma région.OK. Cool.Ensuite, euh...Quand vous allez, en fait, euh...aller chercher dans l'URL...On va faire une requête GET. On était bien sur une requête GET
00:09:36 :dans la doc.Il faut spécifier...Il faut avoirune carte d'identité, on va dire.Il faut spécifier des headers.Avec l'API.Donc ça, en fait,c'est un dictionnaire.
00:09:52 :Ici, on va spécifierquel format on veut.Parce que des fois, ça peut vous retourner du texte,XML, JSON, ainsi de suite.Nous, on va spécifierde manière explicitequ'on veutdu JSON.
00:10:08 :OK.Là, j'invente rien.Ça marche tout le temps comme ça.Et l'API,si vous n'envoyez pas un token,vous n'autorisez pas à aller chercher,à récupérer les informations.
00:10:22 :Donc là, je vais allerchercher mes informations.Et...On va utiliser une string.Et il faut bien spécifier.Donc ça, c'est pareil. Je ne l'invente pas.
00:10:34 :Mirror, ici.Et là, on va aller envoyer notre token.Alors, le token, avec StringLit,il y a plusieurs moyens de le gérer.Donc je vais préparer mon petit...
00:10:44 :Voilà.Il y a plusieurs moyens de le gérer.On peut faire... Alors, on va déjà l'importer.On va faire St.On peut faire St.secret.Et là,ça va aller vous chercher, en fait,vos secrets, tout simplement.
00:11:00 :Et pour ça,il faut se créer un dossierqui s'appelle ....C'est StringLit.Alors, je ne connais pas par cœur.Ça doit être ça.Et ici, vous faitesun filequi s'appelle, je crois,secret.toml.
00:11:20 :Voilà.Et là, par exemple,je vais appeler token.Vous le mettez ici.J'ai mon token.Je vais aller me le chercher.Alors, je vais faire ça.
00:11:34 :Je coupe juste le tempsque je prenne mon token.Je ne m'en voulais pas.Hop.Et mon token, je l'ai.Remboursez nos invitations.On ne voit plus l'écran.
00:11:48 :Et mon token d'accès,je crois que c'est celui-là.Accès token out.Ça doit être celui-là.Je l'ai ici.En tout cas, on ne voit plus l'écran.
00:12:02 :Ouais, t'inquiète.C'est normal qu'on ne voit plus l'écran ?Ouais, c'est normal.Je récupère juste mon token.Je ne rends pas public.Et je remets ça tout de suite.
00:12:14 :Je vous explique juste.Et puis...Juste pour Gabriel ?Ouais.C'est le token de l'API ?Ou bien c'est le...Ouais, c'est le token que j'ai récupérédans l'API.
00:12:30 :Il est privé.Il n'est pas public.Ouais, c'est privé.Hop, c'est bon.Disons que dès que tu comptes surle site-là,ils vont te donner un token.
00:12:44 :Ouais, c'est ça.Tu vas pouvoir demander ton token.Et c'est bon.Normalement, j'ai tout fait.J'ai mis mon token.Ce n'est pas compliqué en soi.
00:12:56 :Je vais juste te demander un token.Et c'est bon.Je peux remettre mon écran.Tac.Tout l'écran.Écran 1.Partager.Normalement, c'est bon.Donc là, ici, ce que j'ai fait,c'est que j'ai créé un fichier secret sur le TML,comme vous l'avez vu quand j'ai commencé à le créer.
00:13:18 :Et à l'intérieur, j'ai fait...J'ai fait ça.Token est égal.Et j'ai mis mon token à l'intérieur.Dans un fichier TML.Qui est à l'intérieur de mon dossier .streamlit.
00:13:30 :C'est Streamlit qui veut que ce soit fait comme ça.Là, pareil, je n'invente rien.Et ici, en fait,avec st.secret,vous allez pouvoir aller récupérervotre token.
00:13:42 :Et ça, il faut savoir que c'est bien.Parce que du coup, si demain,j'ai besoin de faire un repoGitHub,au moins, mon token, il n'est pas dans le repo.
00:13:52 :Il reste ignoré. Il reste là-dedans.Donc ça, vous l'ignorez. Vous ne le mettez pas dans votre repo.Euh...Donc, voilà.Du coup, c'est parce quetu utilises Streamlit, tu es obligé de passer par là.
00:14:04 :Tu ne pourrais pas passer avec un simple.env, en fait.Ben...En fait, le but, c'est d'avoir...J'aurais pu, j'aurais moyen aussi.Je suis sûr que tu aurais moyen. Le but, c'est d'avoir
00:14:16 :en fait, ton tokenqui soit...C'est pas obligatoire.Parce que tu vas utiliser Streamlit.Non, non, non, ouais.Je ne me suis jamais posé la question, mais tu peux...
00:14:28 :Tu pourrais très bien utiliser autre chosepour allerafficher ton token et aller le chercher.C'est juste que Streamlit,il fournit déjà ça, en fait, qui est assez cool, je trouve.
00:14:38 :Monsecret.toml.Donc, c'est pour ça que j'utilise ça.Comme ça, ça montre un petit truc de nouveau spécifiqueà Streamlit.Et normalement, donc là, j'ai bienspécifié le bearer.
00:14:50 :Et on a bien, donc, bearer,le token. Et si je retourne bienmaintenant à sa droite,ici, vous voyez, le headers,j'aurais pu le copier-coller. C'est comme ça,
00:15:00 :accepte l'application JSON, autorisation, bearer,et il y a le token qui est à côté.OK ?Donc, voilà.En général, les API, ça arrive souvent qu'ils vousfassent un code à copier-coller.
00:15:12 :C'est comme ça.Donc là, c'est parti. On va utilisernos paramètres avec urllib.Donc, request.La classe request.url, on va envoyernotre url.Et en headers, on va envoyerle header.
00:15:30 :Donc, l'url, elle est bien là. Le headers, il est bien là.Et on l'envoie ici dans la requête.Alors, vous allez voir qu'après, je vais le faire avecla librairie request.
00:15:38 :Ce sera beaucoup plus simple. Donc là, j'aiune ligne pour faire ça.Ensuite, j'ai ma response.On va faireun request.Un point, c'est urlopen.
00:15:50 :Je crois que ça existe. Non, je ne sais plus.urlopen, c'est ça.Et ici,je vais envoyer mesparams qui sont là.OK ?Maintenant, je suis obligé,vu que je veux des donnéesau format JSON,je suis obligé,ici,j'ai pas vu d'autres moyens de le faire, d'importer
00:16:14 :JSON.Voilà.Et maintenant, je peux faire un dataqui est égal àjson.load.Et ici, j'ai ma response.Donc, voilà.Et maintenant, je peux faire, d'ailleurs,on va faire un truc sympa. On va faire
00:16:32 :un from pprint.Tout le monde connaît ?C'est pratique.Et on va faire un pprint de data.Et on va faire le parallèleavec l'application.
00:16:46 :Je pense que je n'ai rien oublié.Et donc, pour lancer ça, on fait unstreamlit run et je vais appelerindex.Et on va voir si je n'ai pas un bug.
00:16:56 :Non, voilà. Donc, vous voyez mon terminalou pas, là ?Oui.Oui, oui.J'ai récupéré beaucoup de choses.Donc là, j'ai récupéré ici des données de l'API.
00:17:08 :OK ? Donc, on voit bien les résultatsici. Donc, ce n'est pas un film de portadulte, le premier. Voilà.On sait queà la base, c'est en anglais. On a le titre.
00:17:18 :On a le résumé. Donc, il estbien en français parce que j'ai configuré dans l'APIen français. Et on ales images. Enfin, le poster
00:17:26 :passe, on appelle ça comment ? Une affiche. Voilà.Quand est-ce qu'il est sorti ? Ainsi de suite.On a plein, plein, plein d'infos. OK ?
00:17:32 :Sauf que, comme ils sont sympas dans lesAPI, ça, ils vous le disent avant.Ils vous disent si vous récupérez l'API.Dans ma réponse, j'ai quoi ?
00:17:40 :Ici.Donc, par exemple, on a vu dans résultats,on sait que c'est un film d'adulte, le pass,le genre, le langage d'origine,on appelle ça déjà lerésumé, ainsi de suite. Donc, en fait,
00:17:52 :vous avez déjà, quand vous utilisez l'API,ils ont déjà une petite doc,enfin, une grosse doc qui vous dit si vous récupérez.Moi, j'aime bien regarder comme ça,mais j'ai plus l'habitude d'aller direje vais aller m'afficher, en fait,mes élémentsen JSON en modedictionary.
00:18:10 :Pour savoir où je vais allerbouclier. Donc, le but, là,on va faire un truc tout bête.On va aller se récupérerle titre,une image,le résuméet puisla datede sortie. On va faire ça.
00:18:30 :Donc, OK. Pour l'instant, ça va ou pas ?Oui, un peu.Donc, là, ça met vraiment en pratique, en fait,tout ce qu'on peut voir jusqu'ici. En fait,
00:18:40 :tout ce que vous voyez,ce qu'on a l'habitude de voir, des choses un peuéparpillées, genre c'est quoi ? Donc, on importeJSON, ainsi de suite.
00:18:48 :Là, en fait, on combine plusieurs choses et on voit déjàqu'on peut, que c'est assez puissantparce qu'on récupère quand même beaucoup de choses.Donc, voilà.
00:18:56 :Donc, là, j'ai récupéré mes infos.Ensuite,je vais me faire un peu de place,je vais peut-être vous montrer commentça se passe avec Streamlit. On ne peut pas le savoir comme ça.
00:19:06 :On peut facilement écrireun titre.On va appeler ça des filmsdu moment.OK.Non, allez, un truc plus sympa.On va l'appelereuh...Comment on peut l'appeler ?
00:19:24 :Allez.Montora.Talkstream.C'est un peu difficile ce que je fais, mais j'ai l'envie.Hop.OK. Et ensuite, c'est là qu'on va les boucler.Donc, par exemple, on va mettre tout simplementpour chaqueélément, in.
00:19:42 :Donc là, c'est bien en data qu'on a mis.Et, on va allerchercher iciles résultats. OK.Qui est là.C'est les résultats ici.Donc, on va les boucler sur chaque élément.
00:19:56 :Donc, on a dit qu'on voulaiteuh... j'avais ditqu'on voulait en premierqu'on va récupérer le...le titre. Donc là,on peut faire un st.header.
00:20:08 :Vous allez voir après le résultat.Donc ça, en fait, c'est pour m'éviter à mettre çaen html et ainsi de suite. C'est que j'utilise des
00:20:14 :éléments streamlit.Donc, on va récupérer au moins un élément. Je vais vous montrer.Ici, dedans, on vautiliser justement sur cesur quoi on boucle.
00:20:24 :Et, donc, sije veux récupérer le titre, du coup,euh...Vous le voyez ou pas, le titre? Comment il s'appelle?Vous voyez quelle clé que je peux utiliser ou pas?
00:20:38 :Oui, c'estoriginal titre.Le overview, je crois.Alors, overview, c'estpour avoir la...C'est original underscore title. Ouais.Il est en bas, il est en bas.
00:20:54 :Attendez.Il est en bas en français. Ouais, ouais.On va prendre celui-là si ça ne vous dérange pas.Mais oui, en gros, c'est soit on prenait celui-là, soit on prenait celui-là.
00:21:02 :Ah, d'accord.Bon, peu importe. Autant le faire en français.OK. Bien sûr.Hop! Et là,je vais, euh...Je vais couper ça et je vais relancer.
00:21:14 :Non.C'est l'habitudede Django. Qui c'est qui lance ses serveursen Django d'habitude?Si tu es flèche haut, ils te rappellent ta dernière commande.Non?
00:21:28 :Je crois que j'ai fait une connerie.Euh... Ouais, attends.Ah, merci, Ren, il est là.C'est bon, je le cherchais.Alors, euh... Je vais mettre ça
00:21:38 :sur mon...Il est où? Ouais, je vais faire un...Je vais le mettre à part ici. Hop!Bon.C'est pas très beau.Mais là, on a bien notre titre et on récupèrechaque...
00:21:52 :Le titre de film. Ouais, c'est bien.OK. Ouais.Et donc, en fait,dans une API, il n'y a rien de très compliqué parce qu'en fait,là, on a fait le plus dur. On a été tapé dans la requête,
00:22:02 :on a envoyé nos paramètres,notre token, et en fait,maintenant, on n'a plus qu'à aller chercher, en fait,euh... nos éléments.Donc là, c'est pareil.
00:22:12 :Femini.nisa.st.image.Et ici, on va aller envoyerle...le chemin de l'image.Pour ça, on n'a qu'à faireun... donc on a une string.On va envoyer le...
00:22:26 :le...qui est là. Donc le posterPath, c'est ici.OK.Donc, ce qu'on fait, c'esteuh... hop!Ici, c'est l. Tac!Et hop! C'estposter...Vous me dites si je fais une faute, hein, en même temps.
00:22:44 :posterPath. Donc là, le problème, c'est qu'on récupèreque cette partie-là.Et j'avais galéré à trouver.Euh... je me suis misquelque part en favori.J'avais trouvé sur un forum. En fait, il faut trouver
00:22:56 :le début de l'URL pour mettre vos films.Et en fait, euh...Ah, attends, c'esttmdburlposterPath. J'avais fait un truc comme ça.Ouais.Je m'étais embêté là-dedans, et vous voyezqu'en fait... Tac! Voilà.
00:23:14 :En fait, il vous dit...En fait, vous prenez ça.Et ici, vous rajoutez votre...ce que vous renvoie à l'API.Et moi, j'ai trouvé autre chose.
00:23:24 :Ouais. Le pass.Et en fait, j'ai trouvé autre chose. Ici, au lieu de mettreoriginal, en fait, il gère directement les...les tailles de...d'affiches. Genre...
00:23:34 :on peut faire un truc comme ça.Hop! Donc là, j'ai pris ce qu'il y avaitavant, sauf qu'ici, j'ai pas mis original.J'ai mis ici, ça reformate, en fait.
00:23:42 :Voilà. Et donc là,c'est pareil.Normalement,euh...ma flèche... Tac! Hop là.OK. Ça va le faire.C'est chiant que ça se mette si en...
00:23:58 :que ça apparaisse pas.Ça se met sur plusieurs écrans à chaque fois.Et voilà. Vous voyez, en fait,là, j'ai récupéré l'image à chaque fois.
00:24:06 :Donc ça se construitassez vite.OK. Hé! C'est quoi ça?OK.Euh, excusez-moi. Du coup,euh...si on veut étoffer un peu, donc, on a déjà l'image,on peut très bien aller utiliser un autre élémentde Streamlinks, qu'on appelle le subheader.
00:24:24 :Et en fait, vous avez vu,on le met comme ça, tout à l'heure, en forme,mais sans écrirede HTML.Enfin, c'est assez rapide.Donc, on avait vu que l'overview...
00:24:36 :Ça a fait faute. Overview.Ici, c'est le...résumé. Donc, on a le résumé.Ici, on peut faire uncaption.Caption, plutôt, on va dire.Et on peut très bienaller y mettresortie-le.
00:24:54 :Et puis, c'est pareil, on va mettre...J'ai bien fait ma string.Ouais. Tac.Sortie-le. Et c'est elle.Il faut trouver la date de sortie. Je crois que c'est
00:25:04 :release date.Euh...Ouais, dans l'API.Franchement, j'ai les yeux qui voient.Si je fais une erreur, vous me dites, en cas où, dans l'API.Ouais, c'est ça. Vous avez release date.
00:25:16 :OK.Et un truc qui peut êtresympa, c'est de mettre un petitdivider, ici.Ça va faire une séparation.Donc là,je peux très bien même...
00:25:30 :Je l'ai coupé. C'est pas grave.Elle est où,mon localhost ? Il est là.Hop.Hop.Donc, voilà.Ici...Ah, il faut que je relance le serveur.
00:25:48 :Euh...Bah, c'est pas grave. On va relancer.Hop.Et s'il retourne...Ouais, c'est bon.Et donc là, vous voyez, on ale format qui est un peu...
00:26:08 :J'aime pas, c'est le format à l'américaine, là.Il est sorti là, ce mois-ci, ouais.Donc, le format du 18 décembre.Et en fait,rien ne vous empêcherait, ici, de dire...
00:26:18 :On vareformater, en fait,leur date.Donc, ce qu'on peut faire,on va se faire un petit... Non, c'est pas là queje vais le faire.
00:26:30 :C'est pas là. On va couper là, pour l'instant.Tac.On va se créerun petit fichier.On va enregistrer une fonction.Et...Est-ce que vous avez une idée de comment on peut reformaterla date ?
00:26:46 :DateTime, fromIsoFormat,et après,strptime,pour les mettre en forme comme on le veut.Ah, date...Ok. Ouais.Ça fait suite à ce qu'on a vu,du coup, dans les différents mentorats.
00:27:04 :On va s'amuser, je sais pas.On va reformater. Allez, hop.On va le mettre au...au FrenchFormat.Ok.Ici, je vais envoyer...Donc, l'API nous retourne, du coup, en chaîne de caractère.
00:27:20 :Elle nous renvoie la date sur un formaten chaîne de caractère.Et ici,on va, du coup, créer...Je décompose les choses.On va s'amuser avec ça, tenez.
00:27:32 :DateTime, object.On va s'amuser avec ça, object.Vous vous souvenez comment on fait pourcréerun objet dateTime depuis chaîne de caractère ?Avec...Avec le parseur, là ? Ouais.
00:27:54 :Donc, c'est avec le...le P ?C'est ça.StringParseTime.Et donc, on va envoyer notre date, et on avait vuquel était, sur quel format, déjà.
00:28:06 :Ah ben, on en voit encore.Allez, on y va.Ça, c'est du ISO, ça, je sais plus.Plein de doute. Il me semble bien que c'est du ISO.
00:28:18 :Oui.Oui, parce que c'est ce qui est utilisédans tout ce qui est SQL, etc.Ouais, mais ça va êtretrop facile, du coup, j'ai envie de vous embêter un peu.
00:28:28 :D'accord.On va faire un parseur complet.On va pas utiliser de ISO.Et comme ça, on va s'amuser à utiliserles...notre petite lettre de conversion.
00:28:40 :Donc, ici, j'ai envoyé la dateen formatchaîne de caractère.Je vais capturerhier, donc, le grandY, etc.Ouais, ben, vas-y, dites-moi.Donc, hier, ça va êtrele grand Y, parce que là, il est en format4 caractères. Ouais.
00:29:00 :Après, c'est M commands.Titan, si j'ai bonne mémoire.Puis après, D.Petit D.Ben, oui, ça va être ça.C'est parti. C'est un peu l'arrache, ce que je dis,
00:29:12 :mais j'aurais fait ça.On a un tiré à chaque fois.Stéphane, ouais.Je pense que c'est Stéphanequi a sauté dans la chatte, j'imagine.Oui. OK.
00:29:24 :Donc, hier, moiet le grand tiré.Et là, tac.Et Mac, des fois, j'ai encore du mal à m'y faire, c'est un truc de ouf.
00:29:32 :Donc, on a notre...T'es en QWERTY, là,sur le Mac ? Non, j'ai un QWERTY,mais j'ai été longtempssous Windows, Linux, ettout ce qui est tiré, même le biais,l'arrobase, les crochets,la collade, j'ai du mal encore.
00:29:50 :D'accord.Et donc,on va retourner, et cette fois, on va s'amuser du pouvoirde faire une nouvelle conversion.Vous vous souvenez ou pas, du coup ?
00:30:00 :Comment on fait ?Parce qu'au final, tu le veuxen textuel ?En textuel, tu le veux comment ?On va pas utiliser des ISO, quoi que ce soit.
00:30:20 :Donc là, j'ai déjà écritdans le code, ici,sorti-le.Et donc, ici, on vajuste mettre la date au format qu'on veut.100 mètres dephrase, c'est vraiment au format qu'on veut.
00:30:34 :Non, je sais plus.J'ai un blanc.Donc là, en fait, on passe...Ah oui, c'est dans l'autre sens.C'est le PLF, oui, bien sûr.Mais bien sûr, Stéphanem'avait donné le type, sans plus.
00:30:52 :Voilà. Et donc,le mieux, c'est qu'on utilise quoi ? On se fait un jour-mois-année ?On fait quoi ? Comme vous voulez.En français, c'est jour-mois-année, effectivement.
00:31:02 :Vas-y, je vous laisse m'éditer le truc, alors.Qu'est-ce que je vais faire ?Ah ?Ça sera pourcentageB minuscule.Ouais.Et puis, on peut mettre un tiré.
00:31:18 :Ensuite, pourcentageM minuscule, et puistiré pour mettre ensuitepourcentage Y majuscule.OK.Normalement, ça devrait être bon.Et ici, donc, on va se faire un petitimport, comme ça.
00:31:34 :from.funcimportFrenchFormat. OK. Donc, on a importé la fonction.Et en fait, la fonction, ici,elle va directement retournerà une chaîne de caractèresqui est reformatée.
00:31:48 :Du coup,ce qu'on peut faire directement, c'est qu'on va utiliserdans la strings.On vaiciFrenchFormat.Et on le passe dedans.J'ai fait une connerie, je ne suis pas dans la collade. Hop.
00:32:06 :Et voilà.OK. Et on va essayer çadéjà, parce que je ne sais pas si ça fonctionneexactement.Euh...Ouais, c'est pas grave.Est-ce que je suis dans ma...
00:32:20 :Ouais, c'est là.Et il y a un problème.Euh...Alors, attendez. C'est un problèmeau niveau de...Pourquoi il me fait ça ?Je vais relancer ça vers une minute.
00:32:36 :Euh...Est-ce qu'il va bien...Voilà, il va me le lancer, normalement.Et si je retourne sur ma page... Hop.Et voilà. Donc, on a bien notre format.
00:32:52 :OK. C'est bon pour vous, ou pas ?Impec. OK.Donc, vous avez vu qu'ici,on a mis en forme. Bon, c'est pas non plus une mise en forme de malade,
00:33:02 :quoi, mais on a biennotre divider ici.Et,je ne sais pas, on pourrait très bien dire ici,alors que je me souvienne de tête.
00:33:12 :Ici, par exemple,on voudraitwith st.expanderet expander,on peut lui passer quoi ? Une chaîne de caractères.Donc, par exemple, c'estrésumer. OK.Tac, tac.
00:33:28 :Tac, tac. Hop.Et ici,on relance.On relance, on relance. Est-ce qu'il va me le retrouver ?Ouais. Hop.Il ne me le bug pas. Non, c'est bon.
00:33:40 :Et vous voyez qu'en fait, on a tout,sauf le résumé. On peut l'afficher directement comme ça.OK ? Excellent.Ouais.Bon, j'ai rien refait.Mais voilà. Donc, en fait,
00:33:52 :avec StreamBeat, vous faites des...pas mal de trucs sympas comme ça.Enfin, c'est...C'est vraiment cool, ça.Sinon, si c'est JSA,il te fait un bloc de code.
00:34:04 :Ouais. J'ai même une application, moi, oùje me suis fait iciun menu en StreamLitspour le boulot. Et en fait,c'est facile à faire. Je ne sais plus. Vous faites
00:34:14 :un dossier page ou un truc dans le genre. Je ne sais plus.Je ne l'ai plus en tête, là. Vous mettezvos différents fichiers StreamLits, vos différentespages, et puis ça va vous créer un menusur le côté. Voilà.
00:34:24 :Ah oui, direct. C'est vraiment sympa, ça.Ouais.Les trucs de StreamLits, je suppose que tu peux les passerpar... après en variableà Django et que,par exemple, c'est suivant comment t'asdéfini. T'as fait une carte pour les
00:34:38 :films. Si t'as défini, par exemple, que tonimage faisait 50 par 50,après, là, c'estton CSS qui va reprendre le dessuset qui va récupérer tout ça, quoi.
00:34:48 :Bah,dans la relation système chez Django,j'ai prévu de faire un truc,mais quand j'aurai le temps,c'est que tu peux t'amuser, en plus,de manière assez sympathique,c'est de faire uneAPI en Django, puis la consommer dans StreamLits, en fait.
00:35:04 :Ça pourrait être sympa.Oui. Ça pourrait être cool.Je ne l'ai pas encore fait, mais c'est prévu.Et du coup, je ne sais plus ce que je voulaisvous dire. Ah ouais. Donc,
00:35:18 :bon, là, en gros, c'est nickel.Juste, ce que je voulaisvous montrer,c'est que... Alors, attendez.On va arrêterde printer ça pour rien.Ça, on s'en fiche.
00:35:32 :On a le FrenchFormat. On va couper un peu ça.Ici,on utilise URLLib.OK. Et il y a un trucqui estplus sympa à utiliser.
00:35:44 :C'est Python. C'estrequest. OK.C'est cette librairie-làqui, je trouve, c'est plus concis. Vous allez voir.Et j'en ai parlé l'autre jour. C'est Python.Ouais.
00:35:56 :HTTPX. Alors, ça, je ne l'ai pas encoreutilisé, mais c'est un mec qui m'a dit, franchement, à tester.Apparemment, c'est assez cool.Ça ressemble beaucoupdans la façon de faire, mais je ne l'ai pas encore testé.
00:36:06 :Vu que je connais request,ici, je vais prendre request.Et on va se faire...On va allers'installer request, justement.Mon terminal, il attaque. Hop.
00:36:18 :PIP.On va finir en beauté. Install.Hop. Attendez.J'ai un... Ça sonne de partout, là.C'est bon.OK.Désolé. Request.Et voilà. Donc, là, c'est les request.
00:36:42 :C'est vraiment très léger à installer.Et ici, je peux déjà vous direqu'on va dégager ça.Et on va juste faire importrequest.Et qu'est-ce qu'on va garder ?
00:36:54 :Ça va aller beaucoup plus vite. On a notre URL.On va utiliser la réponse.Ça, on s'en fiche.Mon URL de headers, il est là.
00:37:04 :Donc,ça, on supprime.Ça,on supprime.Ici,on va se faire un...Là, on est sur une méthode.Donc, request.get.Et on va envoyerl'URL.
00:37:24 :Et on va directement...Je crois qu'il faut passer...C'est headers, le paramètre.headers égale headers.Et puis, pour moi,on va modifier forcément ici.Parce qu'en fait,on va modifier.
00:37:42 :Et si je ne vous dis pas de bêtises...Non, ce n'est pas ce que je voulais faire.Voilà.Et il y a un problème.Ah oui, j'ai dûvouloir faire un truc.
00:37:56 :J'ai un bug.Je pense qu'il faut...Ok, on va relancer tout ça.On va sauvegarder.Alors, chaque foispar contre, c'est horrible.Et voilà, là, je n'ai plus de bug.
00:38:12 :Et je vais revenir sur ma petite pagequi est là.Bon, la doc est bien faite, vous voyez.Et voilà, j'ai exactement les mêmes infos.
00:38:24 :Sauf que j'ai condenséici, je me suis passé de Jdon.Je me suis passé d'URL libre et je fais tout avecrequest et je le fais icien une ligne.
00:38:34 :Ok ?Excellent.Donc, je vous montre l'URL libreparce qu'en plus, pour le Toza, c'est important.Il faut le connaître.Request pour le Toza, j'ai envie de dire, à la limite, vous en foutez.
00:38:46 :Mais je pense que si demain, vous avezbesoin de taper dans un API comme ça,vous n'allez pas utiliserl'URL libre, mais plutôt request.J'imagine.
00:38:56 :C'est comme vous voulez.D'accord.L'URL libre, il appartientà FriendLib ou c'est Python ?Ah non, c'est Python.C'est une librairie standard.Quand tu fais PythonURL libre,tu vois, il est vraiment en librairie standard.
00:39:14 :Mais j'ai du mal. Je ne suis pas à l'aiseavec. Vraiment.Tout à l'heure, ce que je vous ai montré, c'est que je l'ai fait entrois lignes de code. Ce n'est pas énorme, je suis d'accord.
00:39:22 :Mais il a fallu en plus importer du Jdonpour faire une conversion avec un Jdon.load.Vu queça me saoulait un peu et que je n'ai pas l'habitude,je m'étais amusé à le refaire du coup avecle request.
00:39:34 :C'est rapide.D'accord.Donc voilà.C'est top.Tout est top.Moi, je ne suis pas habitué à capterdes infos sur les API.Du coup, ça fait un exempleen plus d'OpenFootFact.
00:39:52 :Ça, c'est parfait.Et puis effectivement,la mise en pagerapide HTML,c'est parfait.Oui.Ce n'est pas ce que je voulais faire.On ne va pas le faire aujourd'hui, bien sûr.
00:40:10 :Je ne sais plussi je l'ai mis. Non, ce n'est pas là.J'ai fait trop de sous-dossiers.C'est horrible.Je pourrais une fois vous montrer aussicomment on faitune API.
00:40:24 :Parce que là, par exemple, ici, j'ai créé une API.Et vous allez voir que faire une APIsoi-même, ce n'est pas si compliqué que ça.
00:40:30 :Oui, j'avais essayé ça.Effectivement.Oui, c'est bien ça.Donc une fois, on se feraun mentorat.On va voir un peu de l'autre côtécomment ça se passe. Je préfère faire des mentorats plus cool
00:40:44 :d'abord avec Django.Et une fois, on se fera un truc assez...Je pense que j'irai avec Thibaut pour faire au moins une heureassez complètede comment se créerune documentation d'APIautomatique, on va dire.
00:40:58 :Je vais juste vous teaser le truc.Exemple.Je crois que je ne suis pas dans le back-end.C'est dans le back-end.Hop là, back-end.Du coup, on est dans les API.
00:41:18 :On va se faire un run-server.Ici, il va bien se lancer.Et comme par hasard, il se met sur une autre page.Alors attendez.Là.
00:41:30 :Et genre, on fait une API.Tout à l'heure, je vous ai montré la documentationde Databaseavec les réponses GET, ainsi de suite.Et voilà.
00:41:40 :Je ne sais plus si c'estAPI...Alors, API...Schéma............Et voilà.C'est moi qui l'ai fait.J'ai fait mon API.J'ai mis mon nom de version, ainsi de suite.
00:42:02 :Et j'ai dit exactement les endpoints.Donc on va avoir un endpoint GET, POST,GET, PUT, ainsi de suite.Et j'ai dit exactementce que je renvoyais comme données.
00:42:12 :Et pour une POST, c'est pareil.Je veux dire exactementce que je renvoie comme données.Et ce que je renvoie après.Voilà.Donc c'est important de bien documenter ses APIs, en fait.
00:42:24 :Donc ça, c'est un projet exemple.Il est tout bidon.Mais c'est parce que je suis en train de faire un gros projetpour une boîte, et du coup, je leur fais toute une documentationcomme ça,bien détaillée.
00:42:36 :Comment ils ont les tokens,ainsi de suite.Donc voilà.C'était pour finir ce petit mentoratde Noël.Vraiment cool.Swimlit, cool.Merci.J'espère que ça vous a tous plu.
00:42:54 :Ouais.Super.Ouais, ça s'est très bien passé.Mais c'est pas une question,est-ce qu'on peut remplacer Djangoavec Swimlit, c'est possible ?Ben après, ça dépendsi tu fais tout enback-end et que t'as enviede faire un front-end Swimlit.
00:43:16 :Juste le front-end, pas le back-end,je m'excuse.Oui, tu pourras très bien utiliser, consommerton back-enddans Swimlit, et puis fairetour avec une APIDjango Rest Framework, ou APIDjango Ninja, peu importe.
00:43:32 :Oui, tu pourras.Peut-être que c'est plus limitési tu utilisais du UGS ou du React,maisje ne sais jamais.Je pense queSwimlit est plus orienté data.
00:43:48 :Swimlit, ouais, c'est vachementconnu pour la data, ouais, parce que vous pouvezfacilement vousfaire desgraphes,des tableaux dedans,enfin c'est...Si vous allez sur l'AirDoc.
00:44:04 :Ah ben non, c'est...De toute façon, en général, ils les mettent dans l'AirDoc.Je ne sais pas si tu les montres, par exemple.Ici, il y a un grapheet il est dynamique, quoi.
00:44:16 :Ah oui, ça vajusque là, parfait.Ah oui, complètement, ça va loin.Je vous dis vraiment, ça va loin.La doc, elle est complète, elle est facile.
00:44:26 :Si vous allez dans la doc,vous avez la partieAPI références,par exemple, il y a des tutos,et ils vous disent ChartElements, comment ça marche,on clique, comment on fait unhop, et ben voilà, st.charts
00:44:40 :et vous envoyez les datas dedans.La doc, elle est exceptionnelle. Vraiment exceptionnelle.Vous allez voir, c'est simple à comprendre, c'est...Et puis je crois qu'ils mettent un exemple, souvent,en dessous. Ouais, voilà.
00:44:52 :Ils mettent le code,et vous avez l'exemple.Je tiens à remercier de l'avoir présentéil y a quelques mois.Ouais, ouais, c'est...Ça fait plaisir, toujours,de partager des choses.
00:45:08 :C'est P.A. qui me l'avait présenté la première fois.Pierre-André, un ancien menteur d'ici.Ouais, c'est vrai, parce que moi,je ne l'ai pas beaucoup connu, mais Pierre, ouais, il aimaitbeaucoup ce genre de choses. Ah, il adorait ça,
00:45:18 :lui, il étaitscientifique, ingénieur,donc lui, ça lui servait énormément.Ouais.Donc voilà, ben écoutez,si ça vous a plu, je suis vraiment très heureux.
Aucune occurrence trouvée pour « ».
Bravo, tu es prêt à passer à la suite