Session du 07 mars 2024 à 20h00
Développement Web & Frameworks
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Créer un sélecteur de films quotidien avec OMDb
-
Mage: un framework data pipeline hyper puissant et simple
-
Jouons un peu avec l'API OMDb (Open Movie Database)
-
Et si on se créait un petit projet qui nous propose un film à regarder chaque jour...
00:00:00 :Ah c'est bon l'enregistrement est bien lancé. Là Simon nous a quitté, il va revenir jepense. Ouais Simon t'es de retour ? Ouais c'est bon t'entends bien. Et oui Simon sinon
00:00:22 :tu peux écrire dans le chat si tu veux pas prendre la parole mais dis nous si je me trompeou pas, si c'est le cas si je me trompe désolé mais il me semble pas avoir déjà vu en toutcas ton visage dans les mentorats. C'est la première fois que je viens parce que j'ai
00:00:44 :commencé ma formation mardi. Ah ok d'accord. Il me semble par contre que j'ai vu passerune question de toi sur la plateforme non ? C'était bien toi t'as posé une question
00:01:00 :il me semble récemment. Tiens t'y as répondu c'était très clair merci. Je t'en prie c'étaitquoi déjà ? Je me souviens plus parce que j'en ai posé pas mal en fait. C'est bien
00:01:10 :c'est fait pour ça. Ok bon bah il est 20h05 on va commencer. En fait je me rends compteque j'ai prévu un truc un peu chargé mais on va faire au moins deux parties du trucet puis du programme et le mage je vous montrerai la prochaine fois. Le mage en fait c'est un
00:01:33 :framework qui permet de faire des pipelines. Je vous avais montré la dernière fois Daxtermais la mage c'est beaucoup plus puissant et encore plus intuitif. Attendez je vais
00:01:47 :faire un push. Sinon le programme ça vous va vous avez vu un peu ce que je proposaisn'hésitez pas si vous avez des commentaires là dessus. Je vais partager mon écran.
00:02:06 :C'est bon vous voyez tous mon écran ? Ok ouais alors si tu veux voir le programmetu vas sur docstring dans accompagnement quand tu vas dans mentora tu as en fait sit'as le planning ici tu vas voir les différentes sessions donc là ça sera toujours le jeudiet si tu cliques dessus donc là si je clique sur celui qui est précédent t'as la description
00:02:59 :du programme ici. Vraiment quand tu cliques sur la session t'as la description du programme.Et donc le programme d'aujourd'hui c'est je voulais vous montrer le framework mage maisje pense pas qu'on aura le temps mais sinon on verra. Je vais vous montrer l'API OMDB
00:03:21 :qui est Open Movie Database et en fait à partir d'OMDB ce que je vous propose c'estqu'on se fasse une petite application pour s'amuser où en fait on aurait tous les joursune proposition d'un film à regarder et on pourrait se faire une petite interface webqui nous montre quel film à regarder comme ça ça vous donne une idée. Ça va être
00:03:41 :un peu bidon mais ça montre un peu comment on pourrait articuler un tel projet donc làon fera au moins la partie où on va avec l'API aller chercher un film et puis on feraaussi l'interface, le dashboard qui montrera ce film et puis après pourquoi pas l'automatisationoù chaque jour on aura une nouvelle proposition. Voilà donc on va utiliser Python, on va utiliser
00:04:06 :l'API, on va utiliser peut-être Streamlit pour le dashboard et SQLite aussi. Vous avezvu voir dans mon chat GPT, j'avais cherché tout à l'heure, voilà il n'y a pas de souci,il n'y a pas de secret que j'utilise aussi chat GPT, c'était pour faire la connexionavec la database SQLite donc on verra ça tout à l'heure, je vais un peu tout quitter
00:04:32 :je pense. Je vais juste faire un push de mon repos que j'ai créé tout à l'heure commeça on s'en servira après pour correction en fait si je suis bloqué pour pas que jereste buggé pendant longtemps. Ok donc comme ça on peut partir d'un dossier, d'un truc
00:05:09 :vierge, ce sera plus propre et voilà. Donc avant de partager mon écran, je vais justearrêter, je vais juste vérifier. Ok donc je vais vous montrer l'API, je partage pas
00:05:33 :mon écran, il n'y a pas de souci. C'est OMDB API. Alors OMDB API c'est une API quiest open source et qui est gratuite. C'est une API qui vous permet d'aller récupérer
00:06:10 :des titres de films, un peu la description et un lien. Donc on va jouer un petit peuavec ça. Il suffit d'aller dans API, parce qu'en fait une API qu'est-ce que c'est pour
00:06:22 :ceux qui ne connaissent pas, c'est une interface qui permet entre autres des scripts de dialoguerentre eux et d'aller interroger des databases. Donc là pour pouvoir utiliser OMDB, pour
00:06:39 :Open Movie Database, vous allez ici dans OMDB API, vous allez dans API Key et là vous tapezFree et donc là vous rentrez votre email, votre nom, enfin votre prénom, votre nomet vous décrivez un peu pourquoi vous utilisez l'API et vous faites submit et vous allezrecevoir une clé d'API. Donc ça va être un code, une chaîne de caractère à plusieurs
00:07:05 :lettres et vous récupérez cette clé d'API et ça vous permet de faire les accès. Aprèsce qu'ils disent c'est que pour faire typiquement des interrogations à l'API, il suffit derentrer cette URL là avec votre clé d'API. Donc moi ce que je vais faire, est-ce que
00:07:27 :je vérifie qu'on puisse changer, je vais juste vérifier que, est-ce qu'on peut renouvelerla clé d'API, si jamais par erreur vous la voyez, enfin bref, c'est pas grave. Donc
00:07:43 :pour tester, ce qu'on va faire c'est qu'on va se créer un nouveau projet, avec PyCharm,New Project, on va le mettre dans Movie Random. Excusez-moi, je voulais juste vous demander
00:08:09 :est-ce qu'il y a un moyen technique que ton partenaire de l'écran, il occupe tout l'écran,parce que là il n'occupe que la moitié. Oui, il n'occupe que la moitié. Je vais voir,
00:08:25 :en fait ce que je pourrais faire c'est juste qu'après pour moi c'est plus simple de switcherdans les différents trucs, mais je vais voir ce que ça donne avec ça. Désolé c'est parce
00:08:38 :que j'ai un petit écran et du coup je vois pas grand chose. Ah non pas de souci, t'inquiète. Làest-ce que c'est mieux ? Non c'est pas mieux. En fait c'est quoi, vous avez quoi à l'écran,
00:08:52 :vous avez pas uniquement l'interface PyCharm, vous avez quoi d'autre ? Sur la partie de gauchej'ai ton PyCharm et sur la partie droite j'ai les cinq vignettes avec les cinq personnes quiparticipent à la réunion. Ah oui bah ça tu peux le masquer chez toi, par contre c'est pas moi qui
00:09:06 :contrôle comment ça s'affiche chez toi. Je vais chercher alors. Ouais je t'en prie. Donc dans cecas là moi je vais revenir sur le partage d'écran total comme ça c'est plus simple pour moi pourswitcher. Je vais enlever ma caméra, c'est pas la peine qu'on voit ma tronche tout le temps. Ok
00:09:29 :donc je me crée un projet PyCharm, je vérifie que c'est bon. Donc voilà il m'a créé monenvironnement virtuel, je vais zoomer après, ne vous en faites pas. Voilà j'ai l'apparence,
00:09:53 :on va mettre150 comme ça c'est bien pour vous, vous voyez assez bien avec ça ?Ouais ça va. Bon alors on va se faire le module qui va permettre d'extraire le movie,
00:10:20 :extract movie, voilà. Et on va se créer, je vais mettre ma clé là-dedans comme çavous ne la verrez pas. Je vais enlever le partage, deux minutes, excusez-moi.
00:10:44 :Voilà.Ok, je relance le partage.Ok, donc en fait je me suis créé un petit fichier .info dans lequel j'ai mis ma cléet j'irai chercher la clé dedans, comme ça je ne vais pas l'afficher, je vérifie justele MDB que je vais appeler comme ça, alors d'abord on va faire la requête de l'API,
00:12:19 :donc pour ça on va avoir besoin du module request qui n'est pas de base dans les distributionspython, donc on fait un pip install request, on va aussi faire un pip install de chargementdes environnements pour justement extraire les datas qu'il y a dans mon .env, donc pour
00:12:38 :ça je fais un pip install python .env, voilà, et comme ça je peux importer les librairiesici en haut, donc import request, import lot.env, ok, et je fais un lot.env. Donc en fait ce
00:13:01 :que je fais ici, et pour ceux qui débutent, je pense à toi Simon, mais il peut y en avoird'autres, c'est pas grave, il ne faut pas avoir peur des choses, parfois quand je montreet que vous ne suivez pas du tout, c'est des choses que vous allez apprendre au fur
00:13:18 :et à mesure, l'idée c'est de voir des mécanismes. Donc là en fait ce qu'on fait c'est qu'onimporte la librairie request qui permet de faire des requêtes HTTP depuis Python, notammentla requête API, et ici en fait ce petit module, c'est un module qui permet d'aller chargertous les variables d'environnement que je vais mettre dans ce fichier là, que je masque,
00:13:39 :et faire simuler comme si c'était une variable d'environnement à Python. Ici une porteOS c'est un module qui permet d'aller se balader dans les fichiers de mon ordinateur.
00:13:49 :Donc d'abord on va aller chercher la clé, donc là je vais d'abord définir, n'hésitezpas à m'arrêter comme d'habitude si jamais vous avez une question. Donc là je vais dire
00:14:01 :que la clé c'est os.environ.get, et donc là on a dit que c'était ça. Ok donc on vadire def, on va faire un petit test d'abord, vérifier que tout fonctionne bien, moi j'aimebien installer hypython pour être en interactif. Ok je quitte parce que quand on installe hypython
00:14:34 :il faut quitter et recharger. Voilà. Ok très bien, et puis en fait je vais aussi m'ouvrirmon github, comme ça on voit la correction et on ne perd pas de temps à rechercher lesdifférentes manips que j'ai fait préparer juste avant. Ok donc le extractmovie il est
00:15:12 :là, donc on va aller chercher cette fonction là, je vais vous la montrer, en fait on vala décomposer. Ok donc ça en fait c'est une, ah je vais avoir besoin du module random
00:15:24 :aussi, import random. Il va falloir que je définisse aussi ça, je vais vous montreraussi après à quoi ça sert. Voilà, ok, tout ça c'est bon. Et donc ce qu'on va faire,
00:15:56 :je vais vous montrer random movie, je vais d'abord vous montrer en fait avec une requêtespécifique, voilà en fait je vais avoir besoin, voilà c'est bon, on va être bon.
00:16:13 :Ok donc là on a la clé, on a ce qu'il faut, on a l'url qui est défini comme ça, on vadéfinir l'url ici en dehors. Donc ça en gros c'est l'url qui est fournie par l'API,
00:16:27 :c'est un peu l'url de base, le lien HTTP, donc là vous voyez que si je clique là dessus,j'arrive sur cette interface là, là je ne fais rien de particulier, ça c'est pas unendpoint, c'est à dire que c'est pas un endroit où je peux récupérer de la data
00:16:40 :grâce à l'API, mais c'est mon url de base. Ok, ensuite on peut définir des paramètres,donc là je vais définir mes paramètres, donc là en gros mes paramètres ça va être des trucsque je vais envoyer dans mon url. Donc ici je définis la clé d'API, le type, donc en fait
00:17:01 :c'est movie, parce que je veux un film, je ne veux pas une série. S c'est pour search,donc là en fait search ce qu'on va dire c'est que ça va être ce qu'on veut chercher, donc là onva dire par exemple chaussure, donc la chaussure ça veut dire qu'il va aller me chercher tous les
00:17:18 :films dans lesquels il y a chaussure dans le titre, et le genre on va dire action. Voilà donclà en gros ce que je fais c'est que juste je définis, pourquoi il dit que c'est pas défini,clé, ah oui, extract movie, voilà, et donc je vais redéfinir, voilà donc là j'ai défini les
00:17:44 :paramètres que je veux, et donc si maintenant je fais une requête, donc ça c'est le langagePython qui permet de faire des requêtes, je fais response, en fait j'utilise le module request quipermet de faire des requêtes http, url, et avec en paramètre dans mon url pour mon API les
00:18:02 :paramètres que je vais demander de chercher. Donc là il a été chercher tout ce qu'il faut, et doncsi je fais réponse, j'ai bien un truc 200, et si je fais réponse data, non c'est réponse json,réponse .json parce qu'en fait c'est le format un peu de, c'est le format de toute requête API,
00:18:26 :le json, et donc là vous voyez que j'ai toute une palanquée de résultats où en fait il aété me chercher tous les titres de films dans lesquels il y a le mot chaussure et qui sont detype movie et qui sont en plus du genre action. Donc là j'en ai, en fait il sort dans la limite à
00:18:43 :chaque fois de 15, donc là j'ai une liste, une liste Python avec tout ce qu'il faut, le cailloudans la chaussure des grands, le caillou dans la chaussure, éloge de la boîte à chaussures en2018, movie, etc. Donc vous voyez que c'est assez intéressant cette API qui est libre, qui permet
00:18:59 :d'accéder facilement à toute une liste de films. Donc là vous voyez que si je fais, j'ai extrait,en fait c'est un peu comme un dictionnaire Python où vraiment on peut aller accéder,donc là j'ai une liste et donc si je fais 0 par exemple, voilà, 0 j'ai le premier film,
00:19:18 :si je fais 2 j'ai le deuxième film, donc c'est Hamant de chaussures 2010. Est-ce que jusqu'icitout va bien ? Donc si je résume, ce qu'on a fait c'est qu'on a défini un URL de base et après
00:19:33 :on l'a mis, voilà, donc je vais juste, si j'ouvre Postman, en fait ce que je fais ici quand on faitréponse GetURLParams, c'est juste comme si on mettait dans les URLs, on peut mettre ségal ce qu'on cherche, donc là par exemple chaussures, end, on peut mettre, on peut juste
00:20:03 :mettre ça et en fait il faut mettre la clé à chaque fois dedans, il faut mettre clé qui estégale, donc là on va mettre la clé et machin. Donc en fait quand on fait URLRequestGet avec
00:20:14 :params, c'est comme si on mettait directement dans l'URL les paramètres. Vous voyez par exemple,où est-ce que je peux vous montrer un exemple, je peux vous montrer un exemple directement surinternet, ici vous voyez il nous donne des exemples, donc là il faut mettre sa clé d'API etsi je tapais cette URL là avec ma clé d'API, j'aurais tout ce qu'il faut. Si je fais ça et
00:20:42 :que je mets ma clé ici et que ici je mets search égale chaussures, c'est en fait exactement cequ'on fait ici. Donc voilà on est là, donc je vais juste revenir un peu sur les différents,
00:21:07 :je vais enlever les highlights, je vais juste mettre la syntaxe, voilà donc en gros si jereviens un peu sur ce que je fais moi pour, ouais ouais ce sont des vrais films Ludo, ce quej'ai fait en fait pour que ce soit hyper aléatoire, je me suis défini des listes de mots dans lequel
00:21:27 :en fait je vais faire des combinaisons. Je vais vous montrer, parce qu'en fait je pourrais chercherde plein de manières différentes, mais moi je vais définir, si par exemple je définis, je vaisdire search words et puis je vais dire, on va dire par exemple voiture, maison et on va dire je
00:21:56 :ne sais pas, chien et si en plus, pourquoi il me l'a mis comme ça, search words et puis je vaismettre genre, je vais mettre action, aventure et horreur. Donc là en fait je me suis défini de
00:22:19 :listes genre et search words et ce que je peux faire c'est avec le module random de Python,je peux faire, il y a une fonction dans random qui s'appelle random choice et en fait on peutlui dire random.choice et donc là si je fais, si je lui rentre, je vérifie que ma liste elle
00:22:37 :s'appelle bien genre, vous voyez j'ai action aventure, si je fais random.choice et ici enparamètre la liste, il va me sortir n'importe lequel. Je peux continuer comme ça, vous voyez
00:22:50 :il me sort action, aventure, horreur, à chaque fois il va me sortir un truc différent. Donc moice que je peux m'amuser à faire comme j'en ai deux, ben en fait je peux dire, sort moi, doncc'est ce que je fais ici en fait, donc je définis tous les search words que je veux, donc voiture,
00:23:09 :amour, aventure, mystère, action, guerre, crime, étoile, voilà tout ce que vous voulez, lesdifférents genres, donc action, aventure, comédie, drame, machin et après je combine, je combineces trucs là dans ma recherche, vous voyez ici je fais random choice dans search words et randomchoice dans genre movie, comme ça quand dans mes paramètres je vais venir faire ma recherche, il
00:23:32 :va me combiner aléatoirement un mot de recherche de titre et un mot et un genre aléatoirement. Doncvoilà c'est ce que je fais ici, après là je vais, je fais un print où je dis bah dis moi un peu,avant d'avoir mon film je veux savoir ce que tu as été chercher aléatoirement, donc ici il va me
00:23:53 :montrer ce qu'il a trouvé aléatoirement, là c'est mon URL de base et je lui injecte un peu lesparamètres que je veux dans ma requête et après je fais tout simplement, si la réponse est destatut 200 parce qu'en fait dans une requête d'API vous avez différents statuts, en l'occurrence 200
00:24:10 :ça veut dire que tout s'est bien passé, et ben je vais extraire toute la data, donc c'est ce queje vous ai montré tout à l'heure, c'est en gros toute la liste de tous les films qu'il a trouvé etparmi cette liste là je fais encore un random choice où en fait il va aller me prendre au hasard
00:24:26 :un des titres de films qu'il a trouvé. Donc voilà et il va me sortir le titre du film qu'il a trouvé,s'il a trouvé une erreur il va me faire un print une erreur s'est produit. Voilà donc si je fais
00:24:41 :random movie get random movie, donc on lui met la clé, on lui met les search words et les genreset donc normalement si tout va bien, si je fais run extract movie, donc vous voyez qu'il m'a combinéfutur et animation et si je vais voir mon random movie, qu'est ce qu'il m'a trouvé, alors futur
00:25:06 :par stark sorti en 2013 et voilà il n'a pas trouvé de poster, c'est pas grave. Si je relance encore unefois mon script, là il a été me chercher étoiles dans le genre science fiction, ben là si on n'a passtar wars je sais pas ce qu'on peut avoir, oh non, 4 étoiles sorti en 2006, donc là vous voyez il est
00:25:28 :un peu idiot, parce que je lui ai demandé un film, il m'a dit quoi, genre science fiction, donc voilànous on s'attend à, il a sorti 4 étoiles parce que pour lui il a dû identifier ça comme un film descience fiction, mais quand on va voir ça en fait c'est un film français avec José Garcia et François
00:25:51 :Cluzet, donc c'est pas très effectivement, mais bon voilà c'est un peu, on est en train de fairedes trucs pour s'amuser, on pourrait faire un contrôle après avec de l'intelligence artificielle,mais voilà. Donc ça c'est un peu notre script de base qui va aller faire des recherches. Ce qu'on
00:26:11 :ce qu'on pourrait faire déjà c'est se faire la petite interface trimnit qui va, au lieu de faireun random ici, on pourrait se dire bah tiens, ouais, ce que je vous propose c'est qu'au lieude se faire un random, on va carrément aller faire une interface, dites moi ce qui vous
00:26:41 :intéresse, est-ce que ça vous intéresse de se faire une petite interface trimnit dans laquelleon va choisir le search word et le genre, ou même le search word on peut se le mettre en input,et il va nous remplir la database, on pourrait faire ça, mais en fait c'est pas, ça va pas nous
00:27:04 :faire un truc automatique si on fait ça, parce qu'il va falloir rentrer à la main. Donc moi ceque je vous propose c'est que à chaque fois qu'on va lancer notre script, il va aller nous balancerdans une base de données, ah bah Simon si ça t'intéresse, on va le faire après l'interface,
00:27:24 :on va d'abord balancer ça dans une base de données et après avec l'interface on va allerchercher le dernier film, enfin le dernier film listé dans la database, ce sera plus intelligentparce qu'en fait ça sera plus plus automatique. Donc on va faire ça ensuite. Donc on va maintenant
00:27:42 :qu'on a notre script qui permet d'aller chercher un film, on va aller balancer ça dans une databaseSQLite. SQLite c'est quoi ? C'est une database qui est un peu comme le maïsquel mais sur un fichier
00:27:53 :local. Donc on va sortir d'ici, on va aller se créer le fichier insert DB, voilà import SQLite3def insert data into DB. Donc là ça va être la data, on va dire film data. Et en fait ce qu'on
00:28:23 :va faire c'est qu'on va prendre en paramètre le film qu'on a trouvé et on va l'insérer dans labase de données. Retourne none. Pour ça je vais aller chercher ce que j'ai préparé juste avant,
00:28:32 :ça sert à rien que je me galère devant vous à le faire. Donc en fait le script il est déjà fait,je vais le copier et je vous explique ce qu'il fait ce script. La syntaxe, voilà. Donc en gros
00:28:53 :ce qu'on fait avec SQLite3, donc c'est une bibliothèque de Python qui permet de se connecteravec une base de données. Donc là en l'occurrence une base de données SQLite. Ensuite ce qu'on fait
00:29:09 :c'est qu'on va chercher ici quand je fais un from extract movie, c'est dans mon script extract movie,je vais chercher la fonction qui me permet d'obtenir un film random en faisant une interrogation àl'API. Et ici je vais aussi importer les différents search words parce que c'est depuis ce script là
00:29:28 :que je vais faire la génération aléatoire de mes différents mots de recherche. Donc on se créeune petite fonction ici qui s'appelle insert data into db qui vient prendre en paramètre le filmdata. Donc là ici con SQLite connect film db il va se connecter à une database qui s'appelle
00:29:49 :films.db et si elle n'existe pas il va la créer. Vous voyez qu'ici dans mon arborescence j'ai pasde database qui s'appelle films.db. Ensuite ici il crée une, donc en gros ça c'est vraiment la
00:30:02 :database en tant que tel, le fichier database, et ici c'est une connexion à la database. Doncc'est tout simple c'est con.cursor. Je sais pas exactement pourquoi ça s'appelle cursor mais en
00:30:13 :gros ici sachez que c'est juste la connexion à la database. Et ici il va faire une exécution dela requête SQL. Donc voilà après vous en faites pas si vous êtes perdu et que vous savez pas,
00:30:26 :sachez juste que c'est ce qui permet en SQL de faire une requête qui va dire d'insérer dansla table film si elle existe. Si elle n'existe pas la table film dans ma database il va la créer et
00:30:40 :il va aller créer les entrées dans la table. Voilà donc là il crée la table si elle n'existe pasavec ces colonnes là. Donc title, year, en gros c'est les datas que j'avais récupérées grâce à
00:30:56 :l'API et il va aller exécuter. Donc ça c'est la première exécution SQL. Il va juste créer latable si elle n'existe pas. Vous voyez qu'ici en anglais create table if not exist. C'est créer
00:31:07 :la table si elle n'existe pas. Et après insert into films, donc si la table a été créée ou sielle existait déjà, il va aller insérer dans les colonnes titre, année, imdb, type et poster. Il
00:31:21 :va aller créer, il va aller créer, il va aller insérer les datas qu'on a récupérées dans notredictionnaire précédent. Ensuite commit, c'est juste pour dire j'envoie tout ça dans la database et je
00:31:32 :ferme la connexion avec la database. Donc là comme tout à l'heure vous allez voir que si je lancece script, donc là vous voyez qu'en fait on fait exactement la même chose que tout à l'heure,on se crée la clé pour aller chercher les datas dans l'API, on fait la recherche et puis on sort
00:31:52 :aléatoirement un nom de film et on va appeler la fonction insert data into DB avec en argument dela fonction, en paramètre, le dictionnaire. Vous voyez ici je vais juste mettre en commentaire
00:32:09 :pour que vous voyiez bien ce qu'on fait. Je vais juste faire un run de insert DB. Donc làvous voyez qu'elle a été me chercher univers dans le genre science-fiction. On va voir ce
00:32:25 :qu'il nous a trouvé. Select movie. Univers Guissonna, vous connaissez ce film. Ça a l'air d'être unfilm d'anthologie, je ne sais pas ce que c'est. Bref, il nous a trouvé quelque chose, c'est ce
00:32:48 :qui compte. Mais là pour l'instant on a rien fait. Donc maintenant si j'enlève le commentaire làdessus et que je relance mon script, normalement vous allez voir que j'ai une database qui va secréer ici à gauche. Je lance mon script. Donc là il m'a créé films.db. Avec PyCharm, j'ai téléchargé
00:33:19 :une extension qui s'appelle, je ne sais plus exactement comment ça s'appelle, mais ça vouspermet de visualiser directement vos databases SQLite directement dans PyCharm. C'est pas mal.
00:33:29 :Donc là vous voyez qu'en fait il m'a généré un autre film parce qu'à chaque fois que je lancemon script, forcément il refait une combinaison aléatoire de mots, donc c'est pour ça que j'aipas le même film. Et là vous voyez que si par exemple je relance mon script encore une fois,
00:33:46 :il lance, et si je vais voir ma database, refresh, donc là j'ai maintenant deux films dans ma database.Voilà donc CyberHell exposing an Ethernet error. Ça a l'air pas mal ça. Voilà donc
00:34:08 :maintenant on va passer à, c'est bon pour vous jusque là ? Super. Après comme je le dis,vous en faites pas si. Je le répète à chaque fois, à chaque fois, mais c'est important. Si
00:34:24 :vous êtes perdu etc. n'ayez crainte, c'est normal si vous connaissez pas et si vous commencez. Là onvoit juste les choses qui sont possibles de faire pour vous donner des idées, pour des projetsfuturs ou pour voir ce qu'on peut faire avec Python, à quel point on peut s'amuser et faire
00:34:40 :des projets sympas. Ok donc maintenant on va se créer un petit dashboard. Il va aller faire quoi ?Le dashboard tout simplement va juste aller se connecter à la database et il va afficher ladernière entrée. Donc pour ça on va se créer un nouveau dashboard avec Streamlit. Donc il faut
00:35:07 :installer la bibliothèque Streamlit. Pip install Streamlit. Et donc Streamlit c'est un nouveau,enfin un nouveau, un framework que j'ai déjà présenté dans plusieurs mentorats. Ça permet
00:35:22 :de faire des petites interfaces web assez rapidement et les déployer très facilement. Doncon va faire import Streamlit as st. Donc là on importe le framework Streamlit et on va, je vais
00:35:35 :vous montrer rapidement ce qu'on peut faire avec, donc st.write et donc là on va mettremanque d'inspi, trouve ton film mon petit. En plus ça rime, manque d'inspi, trouve ton film mon
00:36:01 :petit. Alors ça si c'est pas du titre d'application, je ne sais pas ce que c'est. Voilà donc ça c'estjuste pour vous montrer. Quand vous avez installé la librairie Streamlit, il suffit de faire Streamlit
00:36:17 :run dashboard. Et donc vous allez avoir une interface web qui va s'ouvrir. Donc là il chargeun peu. Voilà, manque d'inspi, trouve ton film mon petit. C'est, voilà, donc là je suis sur mon
00:36:34 :navigateur web et c'est l'application que je suis en train de créer. Maintenant ce qu'on va faire,c'est qu'on va se connecter à la database pour aller lire, en fait, import SQLite 3. Voilà,
00:36:54 :je pense même, attendez je réfléchis. Je vais aller voir dans l'aide, dans la documentationofficielle de Streamlit, la connexion en database. Streamlit SQLite, exemple. Connecting to data,
00:37:14 :donc vous voyez comment ils font. Je récupère le script, donc, creatable, donc ça ça existedéjà. Moi, ce que je veux, c'est juste une connexion.
00:37:29 :Un truc tout simple, une connexion.Attendez, je regarde juste. Parce que là c'est des databases qui sont sur serveur,moi je veux juste le SQLite. Qu'est-ce qu'on peut prendre, donc ça c'est pour créer l'entrée.
00:38:41 :Attendez, je crois qu'on, SQL.Attendez, sinon je vais aller, j'ai un module, j'avais déjà fait ça sur un autre projet,je vais aller chercher la connexion. Attendez, j'ai deux minutes, excusez-moi.
00:39:50 :Ah bah en fait c'était tout simple. Voilà, donc en fait là ce qu'on fait, donc çaj'ai pas besoin. On va voir déjà ça, ce que ça donne. Name, SensorDB, nous elle s'appelle,
00:40:27 :on va essayer avec, nous elle s'appelle Films, SQL, voilà. Select, nous on va faire Select,étoile, homme, elle s'appelle comment nous, notre table, elle s'appelle Films. On s'est pas embêté,
00:41:01 :on va tout prendre. Voilà, donc là normalement on va voir déjà ce que nous sort ST.Write. Voilà,c'était le truc, le vestige, nous c'est. Ok, donc là on va voir déjà ce qui sort.
00:41:35 :Attendez ça, je vire. Voilà, ça va vous êtes toujours là ? Ok, alors là ce qu'on fait,on a connecté, on a utilisé une connexion entre Streamlit et la database et on va effectuer larequête suivante, Select étoile from Films. Select étoile from Films, en fait c'est une
00:42:06 :requête SQL qui permet d'aller sélectionner toutes les entrées d'une database. Ok, doncSelect étoile, machin, je vais enlever tous les warnings. Ok, est-ce que,il nous faut le module SQLAlchemy, pip install SQLAlchemy. Voilà,
00:42:51 :on relance le dashboard. Alors, qu'est-ce qui nous manque ?Alors, pourquoi, je vais aller voir, qu'est-ce qui nous manque ? Qu'est-ce qui nous manque ?
00:43:48 :Ah oui, d'accord,il nous faut, c'est parce qu'il nous manque là-dessus, bon ça c'est juste, c'est propreà Streamlit, il faut un dossier qui s'appelle Streamlit, dans lequel on met un fichier quis'appelle secrets.toml, et en fait c'est là, c'est ici qu'il faut mettre le lien vers
00:44:47 :votre database. Voilà, donc là vous lui dites que c'est URL, et donc là notre database,c'est FIMSDB. Voilà, donc si je relance, on va essayer, on va voir si ça devrait fonctionner.
00:45:12 :Alors, j'ai toujours, pourtant j'ai ce qu'il faut normalement.Attendez, j'essaie juste de debugger ce truc-là, pourquoi il faut, non j'ai bien mis ce qu'ilfaut. Secrets.toml, c'est bien ça.
00:46:39 :Alors, je vais essayer de voir dans,alors qu'est-ce qu'il pourrait me manquer ?Oh oui, magnifique, je crois que c'est ça le problème. Effectivement, j'ai pas mis
00:48:56 :la section, je vais vérifier que c'est bien ça. Ah, ça aurait pu être ça, et non, c'estpas ça. Ah, merci Pierre, t'es un boss. Voilà, c'est bien, merci beaucoup Pierre, j'aurais
00:49:32 :pu rester bloqué dessus. Alors là, ce qu'on fait, c'est que, donc vous voyez, on a dansnotre petite, on met tous un smiley, bravo, comment je fais, un smiley, c'est applaudissementpour Pierre à feu. Donc là, on est sur notre dashboard avec la connexion à la database et
00:50:02 :nous ce qu'on voudrait, c'est sortir, peut-être même on pourrait afficher le dernier. Donc là,déjà limite ce qu'on peut faire, c'est que dans le dashboard, au lieu de tout afficher,parce que nous on s'en fiche, on peut juste mettre, voir tous les films dispos, donc on vadire, with st.expander, voir tous les films que je t'ai déjà proposé. Donc là, en fait,
00:50:44 :on va tout afficher. En fait, il faut savoir que quand vous faites une requête avec con.queryde Streamlit, il vous sort un dataframe, le type dataframe. Donc là, mes films, en fait,
00:51:00 :si je faisais type mes films, c'est un dataframe. Je peux même mettre, juste vérifier que c'estbien un dataframe, et il me semble que c'est un dataframe panda. Rerun, c'est bien un truc de
00:51:18 :la classe panda, donc si je fais import panda.aspd, voilà, et je pourrais faire le dernier, en fait,on va dire, last movie, égal, mes films, on va dire, iloc, en fait iloc c'est pour atteindre ladernière ligne d'un dataframe, et donc là on va faire st.dataframe, on va tout afficher, donc là
00:52:01 :c'est mes films, et on va dire st.info, st.writes même, je te propose ce film, mon petit gars, etdonc là on va dire st.writes, et on va dire, last movie, toDict, je pense que ça, ça va le faire.
00:52:32 :Voilà, donc en fait, quand on arrive sur notre application, on va avoir ce film là, on va dire,là vous pouvez afficher tous les films qui ont déjà été proposés, donc là vous allez avoirvotre database, et puis elle va grossir petit à petit, donc si jamais, par exemple, vous voulez
00:52:51 :en revoir un ou quoi, vous pouvez, et lui, en fait, il faut imaginer que votre interface web,vous allez venir dessus tous les jours, et il va dire, moi je te propose ce film mon petit gars,donc ça va être, on peut juste afficher, on va afficher ça plus proprement quand même, on va
00:53:11 :dire st.writes, on va dire last movie, et en fait on va pas tout afficher, on va juste afficher,on était où, donc on va faire title, et puis poster, parce qu'en fait on pourrait se direqu'on va afficher l'image, donc on va juste afficher title, poster, voilà, title, poster,
00:53:49 :et puis en fait on pourrait même afficher l'image ici, on pourrait faire un render de l'image,mais voilà, et ce qu'il faut se dire, c'est que maintenant si je relance mon, si je relance ici,une fois mon script, je vais le lancer sur une autre, hit write, je vais lancer run insert db,
00:54:22 :donc la étoile drame, si maintenant j'actualise, normalement j'ai, il faut que je relance mondashboard, je relance le dashboard, et donc là vous voyez qu'en fait il me propose le dernierfilm qui est disponible dans la database, donc là il a rajouté les étoiles de midi, il me propose
00:54:49 :d'aller voir ce film là, et on pourrait imaginer qu'en fait la mise à jour de la database, ce queje fais ici là, vous voyez quand je fais run insert db, donc là dans la database normalement il m'amis un nouveau film, en plus encore, si je fais un refresh, donc là c'est quoi, Robojocks, sorti en
00:55:11 :1989, si on fait une mise à jour de la database, donc à chaque fois en fait il faut relancer ledashboard, mais ça c'est parce qu'on est en mode développement sur le local, normalement on peutlui dire, on va même mettre, tiens on va se mettre un bouton, on va lui dire de mettre à jour la
00:55:30 :database, en fait il va renouveler la connexion, dashboard, ouais en fait ce qu'on peut dire c'estqu'on va se mettre un bouton, if st .button refresh db, on va relancer, on va dire mes films,
00:56:00 :on va relancer en fait la requête, et normalement il va prendre en compte,ok, il faut que je relance les terminaux, je vais mettre run dashboard, donc là vous voyez il m'a créé unnouveau bouton, je crois que je vais mettre de la couleur,voilà, donc là j'ai un bouton, donc là pour l'instant on a ça, vous voyez qu'on a quatre
00:56:37 :entrées, si je fais une nouvelle entrée dans ma database, donc avec le genre thriller, donc là sije fais refresh, donc j'ai un nouveau film encore, cyber LF, vous voyez qu'il me l'a sorti deux fois,tiens ça c'est marrant, ça on pourrait gérer que si il a déjà été dans la database, on ne veut
00:56:56 :pas qu'il l'ajoute, c'est le pote de Robojocks, ici je vais relancer pour prendre ledernier, amour genre fantastique, miou miou, non miou you bit, monde amour, et donc là vous voyez que ladatabase elle est toujours comme ça, si je fais refresh DB et que je mets à jour, il n'a toujours pas
00:57:25 :mis à jour, pourquoi, ouais parce qu'en fait ici c'est là qu'il faudrait que je le write,bon c'est étrange mais en fait de toute façon il faut se dire qu'à chaque fois que vous allezrelancer le dashboard, quand vous allez vous connecter, il va le remettre à jour et donc
00:58:10 :vous aurez la dernière liste mise à jour du database. Donc ce qu'on peut faire laprochaine fois, c'est que je vous montrerai comment on peut mettre en place le fameuxmage, donc en fait mage c'est un framework que je peux vous montrer sur un déploiement à moi,où en fait vous avez des pipelines comme ça, un pipeline c'est quoi, c'est une suite
00:58:31 :d'instructions qui est orchestrée, donc ça veut dire que vous pouvez contrôler les succès ou lesréussites de chacun des scripts, donc là si je vais voir dans le pipeline, que je vais voir monpipeline ici, voilà donc ça typiquement c'est un pipeline parce que je fais une extraction d'API
00:58:57 :et ensuite si l'extraction d'API a réussi, je balance ça dans une database. Donc typiquementce qu'on pourrait faire nous, c'est que chaque jour on fait l'insertion dans la databased'aléatoirement n'importe quel film, et notre application Streamlit, elle afficherait à chaquefois le dernier élément rentré dans la database. Donc en fait on aurait ici une database qui va
00:59:26 :grossir chaque jour, elle va prendre une ligne de plus chaque jour, et chaque jour on va justeafficher le dernier film comme ça, à chaque fois qu'on va se retrouver sur notre sur notredashboard, à chaque jour on va avoir une proposition de film, et on pourra aller chercher ce film pour
00:59:44 :se le regarder le soir, comme on veut, tranquille. Voilà une petite idée de projet que vous pouvezessayer de reproduire, après vous pouvez le faire différemment, mais il y a toujoursplein de moyens de faire des trucs, là c'est juste une proposition, et puis sachez que l'APIelle est gratuite, l'API que j'ai utilisé là, le OMDB, donc vous avez de quoi vous amuser.
01:00:15 :Voilà ce que j'avais en tête pour ce soir, on a exploré pas mal de choses, on a fait quelquesmanipulations d'API, on a manipulé des databases, ouais carrément tu peux mettre un fil sur la note,en fait ce que tu pourrais te dire, tu pourrais même, parce que là en fait moi j'ai créé une
01:00:45 :interface où il me propose un film aléatoirement, mais tu pourrais te mettre des paramètres ici,enfin des boutons dans lesquels tu viens choisir, en fait dans le dashboard, donc si je dégage toutça, on pourrait dire, genre, donc là tu dis ST.input, choisis le genre de film, search, donc là
01:01:22 :tu mettrais search égale ST.textinput, mais au moins un mot du titre du film, parce qu'en groson peut pas chercher en mode tous les films, faut au moins l'aider sur l'élément que vous voulezdans le titre de votre film, on peut même faire un petit truc joli où on va mettre les deux,
01:01:48 :parce qu'en fait vous voyez si je fais ça, je vais avoir une interface assez moche, enfin mochec'est déjà pas mal, mais là on a les deux champs qui se suivent, on peut mettre ça sous forme decolonne, donc on va dire cols égale ST.cols2, donc là ça veut dire je veux deux colonnes,
01:02:05 :et on veut dire avec la première colonne, je veux afficher le genre, et with col1, je veuxafficher l'autre, et après ce qu'on met c'est que if ST.search, bah là en fait on fait directement
01:02:31 :l'appel d'API, donc là typiquement je pourrais refaire pareil, attendez je vais essayer rapido,je vais un peu tricher, donc la clé on la met là, et là en fait je vais forcer leslistes de recherche à notre juste notre search, c'est un peu bourrin ce que je fais,mais c'est juste pour qu'on aille vite, genre on n'a pas besoin de ça, ST.write,
01:03:22 :voici ton film, mon petit coco, amuse toi bien, et là on va dire ST.write, le selected movie,et donc là on va tester si ça marche,voilà donc choisis le genre de film, donc on va dire amour, et on veut que dans le titre il yait passion, search, ah oui j'ai pas importé, extract movie, import, get random movie, aller
01:04:41 :on y retourne, amour, passion, search, voici ton film, mon petit coco, amuse toi bien, the lastvoyage of the demeter, voilà et puis on peut refaire un autre, donc là si par exemple on veutchoisir le genre de film, je me suis pas trompé, je l'ai bien mis dans le bon sens, c'est search,
01:05:07 :choisis le genre de film, donc là on veut un film d'action, et on veut, qu'est-ce qu'on veutdans le titre, on veut le mot mort, voilà, alienation, bon voilà, peut-être que vous voyezpas bien, je zoome un peu, action, aller on s'en fait un petit dernier pour la route, on va dire
01:05:44 :comédie, et on veut, ah j'ai pas d'inspi, pied, search, voilà ton petit cyber tracker,ouais je pense qu'en fait j'ai dû intervertir les deux, genre, bon bref, vous avez compris leprincipe. Voilà, c'est tout pour moi pour aujourd'hui, vous voyez ici, si je vais voir ça,
01:06:28 :wow, cyber tracker, ça après on pourrait se dire que cette image là on l'affiche dans notredashboard, merci Ludo, bon bah voilà, je sais pas si, est-ce que vous avez des questions là-dessus,merci Ludo, j'espère que ça vous a plu, les autres, et puis comme d'hab, n'hésitez pas,si vous avez des questions, des remarques, n'hésitez pas à faire des remarques sur la
Aucune occurrence trouvée pour « ».