Session du 15 février 2024 à 20h00
Data Science & IA
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
Introduction pratique au web scraping
Découvrez les bases du web scraping, ses usages concrets, ainsi que les aspects légaux essentiels à connaître avant d’extraire des données de sites web.
00:00:00 :Alors, je vais attendre un petit peu que les gens arrivent, en attendant je vais partagermon écran, j'ai un truc, oula, pardon, on a fait un peu de ménage.
00:00:40 :Alors, est-ce que vous voyez bien mon écran ?Ok, alors avant de commencer, attendez je regarde juste un truc, alors je ne sais passi vous avez vu, mais sur Youtube, il y a une vidéo qui vient de sortir, c'est ça, donc ilfaudrait, enfin il faudrait, il y a, Thibaut vient de sortir une vidéo sur le scrapping qui est,
00:01:57 :enfin je n'ai pas encore eu le temps de tout regarder en détail, mais c'est hyper hyperintéressant, donc vraiment je vous conseille à tous d'y aller, c'est important de, si vous yallez et que le contenu vous plaît, mettez un pouce, mettez des commentaires pour l'algorithmeYoutube, vraiment n'hésitez pas, et puis partagez un maximum aussi si vous avez des réseaux, une
00:02:24 :communauté etc, ça aide vraiment beaucoup le travail qu'a fait Thibaut, notamment sur lessponsors, et au-delà de ça, au-delà du fait que voilà, liker etc pour aller voir, c'est vraimenthyper intéressant en fait, moi plusieurs fois j'ai dû refuser des missions parce que voilà,il y a beaucoup de demandes sur internet de faire du scrapping, et on est souvent intimidé par faire,
00:02:52 :à faire du scrapping parce que il y a des aspects un peu légaux qui sont parfois compliqués àcomprendre, et Thibaut il parle de tout ça très précisément dans la vidéo, donc voilà, franchementn'hésitez pas à y aller, et voilà c'est hyper hyper intéressant. Pour ceux qui ne connaissent pas
00:03:13 :le scrapping, c'est pour aller récupérer des infos sur des sites web, c'est un petit peuune manière de récupérer de la data automatiquement sur les sites web, qui à labase n'est pas fait pour, c'est à dire par exemple vous avez un site web, vous avez un tableau,ben voilà, le développeur qui a fait le site web il a fait un tableau html avec des divs et des
00:03:40 :tables etc, c'est pour faire un affichage html, c'est à la base, c'est pas pour récupérer unfichier json ou csv, mais le scrapping permet justement d'aller récupérer les datas qui sontstructurées dans le fichier html, et après de faire, donc en fait ça fait un peu souvent surun site web, je sais pas, imaginez, c'est là tu peux désactiver ton micro si tu, à moins que
00:04:08 :c'est une question, pardon c'est bon c'est bon monsieur, non non pas de souci, donc ouais imaginezque vous avez un site web avec, je sais pas, plein de, je dis une bêtise, je sais pas,vous voulez faire des paris sportifs et il y a un site web sur l'équipe tv qui propose les
00:04:26 :statistiques des joueurs, en forme de tableau, ben vous n'allez pas à la main récupérer chacune desvaleurs, et s'il n'y a pas d'api, donc une api ça permettrait en fait à un programme de venirrécupérer toute la data directement, sans passer par l'interface html, ben s'il n'y a pas d'api,
00:04:43 :ben vous n'avez pas trop le choix d'autre que faire du scrapping. Donc voilà, cette vidéo là jel'ai pas encore vue en complet, mais elle vous donnera beaucoup d'armes pour faire ça, et aussitout ce qui est aspect légo, pour voir si vous avez le droit ou pas le droit, effectivement quand
00:05:03 :vous allez sur un site web, donc par exemple, je sais pas si on va sur le site apple.com,normalement dans n'importe quel site web, si vous tapez slash robot.txt, en fait ici vous allez
00:05:17 :avoir une liste de tous les sources qui ont le droit d'aller scrapper le contenu. Donc j'imagineque Thibault va en parler dans la vidéo, mais typiquement là user-agent, ça veut dire que toutce qui est d'isolo ici en dessous, ça s'applique à n'importe quel user-agent, donc n'importe quelscript, etc. Ok, donc voilà, allez voir la vidéo, liker, commenter, partager un maximum, et puis
00:05:50 :Thibault m'a dit aussi qu'il allait, d'ici quelques jours, mettre en place cette vidéo-làsous forme de parcours de formation sur la plateforme. Donc vraiment, n'hésitez pas à
00:06:03 :partager un maximum. Donc voilà pour ça, qu'est-ce que, ouais avant de commencer aussi sur le petitprogramme que j'avais prévu, je sais pas si vous avez vu sur discord, mais Gabriel il a fait unpetit script qui a l'air très intéressant, donc si tu veux, ça sera en formation sur Dobstring.
00:06:31 :Donc Gabriel, je sais pas si tu veux montrer un peu ton script, pour servir aussi, moi quand j'aivu ça, je me suis même dit d'un point de vue perso que ça pourrait être utile. Ouais, alors en fait, c'est utile parce que si tu veux, ça t'évite de te payer un abonnement
00:06:50 :tous les mois à OpenAI qui a plus de 20 balles, je crois qu'il était bien, et du coup en fait pourles promptes, enfin pour du texte, je passe par la playground, et pour la génération d'images tupeux pas, donc apparemment il faut forcément faire son script soi-même. Donc comme ça, ça me revient
00:07:08 :beaucoup moins cher qu'un abonnement tous les mois. En fait, tu payes l'API OpenAI.Ouais, c'est ça, effectivement, et ça revient moins cher. Et celle-là en fait, l'API, tu payes à ce que tu
00:07:29 :un casque que je payais avant. Ok, bah vas-y, montre-nous ton petit script. T'as dit que t'avais fait unrepo GitHub, ou sinon tu veux que j'aille le voir ? Si tu veux, je peux te le mettre en action avec mon partagé,
00:07:42 :mais justement, peut-être que ça va nous permettre de voir, ah oui, mais il va falloir l'accès d'APIperso, je pense, parce que moi j'en ai une aussi, mais peut-être qu'elle marchera pas. Attends, d'abord,
00:07:58 :on va juste montrer ton repo GitHub un peu, pour que tout le monde voit à quoi ça ressemble pourceux qui n'en ont pas. Vas-y, si tu veux nous en dire un peu plus. Ouais, donc j'ai fait une petite
00:08:07 :présentation un petit peu très standard. En gros, l'objet qui me sert à générer l'image, il est dansl'image générateur. Donc, j'importe OpenAI, j'installe OpenAI, que je récupère, qui n'est pas en clair,
00:08:32 :je le mets dans un fichier pour le rendre, et ensuite, j'écris un objet, bon, il n'est pas super bien fait,mais comme ça il tourne, je le fais un peu à la va vite. Donc, dans l'attribut, j'ai le client OpenAI,
00:08:44 :j'ai le modèle qui va être utilisé, et j'ai le prompt. Et en fait, j'envoie ça comme ça. Après,je génère mon image, et ensuite, j'assume l'URL. Ok, et dans le readme, tu as mis comment on fait
00:08:59 :pour s'en servir. Donc, ok, OpenAI.env. Bon, en fait, juste pour info, tu pourrais mettre unrequirements.txt et inviter l'utilisateur à faire un pip install et requirements.txt. Ouais, j'avoue,
00:09:13 :je le fais pour les gros projets de Django, mais là, c'est vrai qu'il n'est pas fait. Tu sais quoi,je vais essayer avec, comme ça, c'est l'occasion de tester, avec ma propre clé d'API, OpenAI.
00:09:27 :Ok, je vais peut-être masquer un peu ce que je fais. Attendez, je vais juste, pour ne pasafficher ma clé d'API. Comme ça, tu n'auras plus qu'à lancer le mail, et en fait, le mail.py va te
00:10:06 :lancer le script direct. Ouais, ouais, attends, j'ai chez, create new script key, on va l'appeler,c'est une clé d'API particulière, ou c'est juste OpenAI, ça va fonctionner ? Ah non, non, non,
00:10:21 :c'est le standard, je ne sais plus, j'ai créé une test image. Ok, bon, attends, on va voir lecreate script key. Goodbye, ok. Désolé si je n'affiche pas, mais en fait, je suis juste en
00:10:34 :train de, là, de créer, je vais me créer un nouveau dossier. Ah ben, en fait, je vais carrémentle pool, en fait, ou faire un clone de ton dossier. Comme ça, vous pouvez voir en live
00:10:47 :ce qu'il se passe quand on clone un repo, mais bon, je pense que vous devez déjà savoir.Attendez, je vais faire avec un terminal, c'est un peu vite. Ok, donc, on va aller là. Est-ce que
00:11:06 :c'est assez gros, là ? Perso, oui, c'est très bien. Ok, alors, ton repo, il s'appelle comment ? Code,ok, donc, là, en fait, ce que j'ai fait, c'est que j'ai fait un clone du repo de Gabriel. Ensuite,
00:11:46 :je vais dedans. Ok, donc, là, ce qu'il va falloir que je fasse, c'est, je dois créer un, tu l'asappelé comment, ton environnement ? C'est un .env qui va chercher ? Un .env, comme ça ? Ouais,
00:12:02 :c'est ça. Ok. Et l'environnement virtuel, je l'ai appelé .env. Ok, donc, on va ouvrir ici.Donc, là, je vais mettre ma clé d'API. Comment tu l'as appelé, ici ? Attends, je l'ai.
00:12:21 :Je l'ai dans l'image générateur. C'est Open API. Open API, excuse-moi, Open AI. Attends, parce quej'essaye de la retrouver, là, je suis un peu perdu, j'ai plein de fenêtres ouvertes. Ok,
00:12:51 :merci. Ok, donc, là, je vais aller copier, attendez, j'accepte. Je vais aller copier maclé, ici, en dehors, pour pas que vous la voyez. Putain, j'en ai partout. Un peu compliqué.
00:13:22 :Donc, après, il n'y a que la libre Open AI. Ok, donc, là, je suis, j'ai mis dans monenvironnement ce qu'il faut. Je vais zoomer un peu. Donc, là, après, tu dis, je vais ouvrir un
00:14:07 :nouveau terminal. Je vais créer mon environnement virtuel. Ok. Comme ceci. Ok, c'est parti.Voilà, et maintenant, après, je vais aller voir dans ton repo directement, parce que t'avais faitça bien. Alors, ensuite, OpenMachin, ok, et donc, là, qu'est-ce qu'il faut, tu conseilles de faire
00:15:10 :quoi, d'abord ? Je pense que tu lances un python main.py, et normalement, c'est bon. Ok. Tout est bieninstallé. Python main.py, je vais zoomer un peu pour tout le monde. Alors, c'est dalle des a2l de
00:15:43 :Ok, donc, là, tu demandes une génération d'images ? Ouais, c'est ça, tu fais ton compte, mais je ne sais pas,tu fais un chevalier au moyen âge. C'est en français ? Essaye en français, tiens. Attends, je vais mettre knight, c'est ça, un chevalier, knight writing, salut tout le monde, salut, pas de soucis. Ok, alors, qu'est-ce qu'il se passe ?
00:24:03 :On va le recréer. GetData.py. Et puis ici, on va se créer un fichier. En fait, le pipeline.conf, ça vous permet de catégoriser vos trucs.Donc là, si par exemple, vous avez des variables qui se réfèrent uniquement à votre API vers laquelle vous extrayez la donnée, vous pouvez le catégoriser.
00:27:51 :Donc en fait, c'est pas mal, ça vous permet un peu de catégoriser vos différents variables d'environnement. Voilà, pensez à configParser, c'est pas mal.Donc maintenant, ce qu'on fait, c'est que je vais mettre, attendez, je vais cacher mon truc pour juste renseigner la clé d'API pour les news.
00:28:12 :Ok, donc là je suis en train de renseigner ma clé d'API. Je l'ai appelé accessKey, voilà.Ok, donc Outline, API, AccessKey, API News, vérifier que c'est bien API News, c'est bon.
00:29:13 :Ils nous définissent un peu l'URL qu'il faut utiliser, donc il faut apporter ici un request, import, request, voilà.Et donc si je lance ça, donc là vous voyez, j'ai mis l'URL, l'accessPointURL qui permet d'avoir les top headlines par, là j'ai plié par pays,j'ai rajouté ça dans mon URL et ici je lui mets ma clé d'API. Donc c'est assez classique, si je lance ça, donc je fais GetData et que je vais voir ma réponse,
00:30:24 :toutes les semaines ou tous les jours, en fait notre pipeline de data ça serait d'aller récupérer chaque jour via cette requête les informations,et après on les balancerait, on balancerait tout ça dans un bucket, donc c'est un endroit sur Amazon dans lequel on peut stocker des fichiers CSV,et après à partir de ces fichiers CSV on balancerait tout ça dans une base de données. Vous allez vous dire mais pourquoi on fait ça ?
00:30:51 :Parce qu'en fait quand vous faites un pipeline de data il faut toujours garder la data brute, parce que vous allez faire de la transformation sur votre data,vous allez faire des filtres etc, et si jamais il y a un moment, je sais pas, vous avez une question, il y a un problème dans votre data,
00:31:40 :Voilà pour ceux qui des fois se posent des questions sur les API, voilà typiquement à quoi peut servir une API, là elle a été développée par News API, c'est le nom de l'API,et on peut récupérer via une ligne de commande toute une liste d'articles, quelque chose qu'on n'aurait pas fait à la main en tapant les URL à la main à chaque fois et en faisant un copier-coller.
00:32:14 :Donc on a récupéré ça, je vais juste aller voir la tête du truc pour le transformer, pour mettre tout ça dans un tableau.J'espère que je ne vais pas être bloqué parce que je crois qu'avec la version gratuite on a uniquement 200 requêtes par jour, mais ça devrait aller.
00:32:40 :Donc si je fais réponse .json, nous ce qu'on veut c'est les articles, on a les articles.Alors les articles c'est quoi, c'est une liste en fait, si je vais voir le premier, je regarde juste un peu le format de la réponse pour voir.
00:33:23 :Ok donc on a le source, on va essayer de balancer ça dans un DataFrame pour voir ce que ça donne.Voilà donc ça c'est déjà un peu mieux, source, content, c'est pas mal, et puis on va refaire.
00:34:56 :voilà on va quitter ça, je relance ma requête, ok et donc si je regarde mon dataframe, voilà doncon a un dataframe qui est assez, voilà on a la liste des 20 articles les plus, je ne sais pas exactementce qui me sort, mais je crois que c'est le top headlines des 20 articles publiés aux Etats-Unis,
00:35:24 :après on pourrait en avoir un en France etc. donc ce qu'on va faire c'est qu'on va dire queon va boucler en fait sur les pays, sur on va dire France, US et puis qu'est-ce qu'on peutmettre aussi, je vais aller voir ce qu'ils me disent, voilà il y a les différentes countries
00:36:00 :qui sont disponibles ici, donc nous on va aller récupérer Belgique, FR et US, ce sera déjà pasmal, donc on va dire country in, donc on va prendre FR, BE, US, ok, voilà donc on a ça,et ici on va mettre country, et en fait on va sauvegarder, on va dire pf2csv, data, country,
00:36:50 :et puis on va rajouter la date en fait dessus, import datetime, et puis on va mettre la dateen fait comme ça on saura à chaque fois exactement, parce qu'on peut imaginer que le script on lelance tous les jours pour récupérer la date à chaque jour, donc là je vais rajouter en fait la
00:37:18 :datetime dans le nom du fichier, donc c'est datetime.no, ok, voilà donc là ce que je faisc'est que je fais un script pour récapituler, on a le parseur qui va récupérer la clé qui mepermet de me connecter à mon API, et je vais boucler ici sur trois pays différents, la France,
00:37:43 :la Belgique et les US, je fais ma requête d'API que je mets à jour à chaque fois avec le country,je récupère sous forme de JSON, et je transforme tout ça dans un dataframe, et ici je le balancedans un fichier CSV que je vais récupérer dans mon local ici, donc je lance le script,
00:38:04 :ok, donc là vous voyez que j'ai récupéré trois dataframes avec le datetime, et puis à chaque foisdedans en fait j'ai donc là pour la France, pour la Belgique et pour les US, avec vous voyez ici ladatetime, et il faut imaginer que demain ce sera différent, ici ce ne sera pas 15, ce sera 16,
00:38:26 :et on en aura plein à chaque fois, et voilà donc maintenant après ce qu'on aimerait faire c'estbalancer tout ça, parce que moi je ne veux pas imaginer que votre script vous lancé en local,très bien mais vous n'allez pas vouloir garder les fichiers CSV sur votre local, vous voulez
00:38:45 :qu'ils soient disponibles en ligne en fait H24, donc pour ça je vous propose qu'on les mettedans un bucket Amazon, un bucket c'est quoi ? c'est un objet, c'est un espace de stockage
00:38:58 :qu'on peut utiliser sur Amazon, un peu comme un drive mais un petit peu plus en mode développeur.ça va, vous vous captez jusqu'ici ou vous voyez peut-être pas,est-ce que vous voyez l'intérêt quand même ou c'est flou pour vous ?
00:39:15 :ok très bien, bon je vais sur mon compte AWS, je vais vous montrer comment créerun bucket et comment on s'y connecte, donc là moi j'en ai déjà fait un mais on va le créerensemble, ok donc là j'ai déjà un bucket, en fait on va utiliser celui-là, c'est pas la peine
00:39:54 :d'en faire un autre, et si je vais vous montrer quand même il faut que vous sachiez si vousvoulez le faire, donc avant de supprimer un bucket, il faut le vider, donc permanently delete,ok donc il n'y a plus rien dedans, et maintenant je peux supprimerpipeline, docstring et let bucket, ok donc là je me retrouve sur le dashboard AWS, je vous avais
00:41:05 :montré un petit peu la dernière fois, nous ce qu'on veut c'est un S3 bucket, donc on va allerici, vous faites create bucket ici, là il me le met en US North Virginia, ça va être, moi je levoudrais, pourquoi je peux pas le mettre, ah oui parce que je me suis mis en, j'ai pas mis la bonne
00:41:29 :zone, ça sera peut-être un peu plus cher, bon bref on va se le mettre là, c'est pas grave, vous laissezun peu tout par défaut, il n'y a pas de soucis, donc là on va mettre le nom du bucket, docstringpipeline, ok tout ça vous laissez par défaut, tout ça on peut laisser, voilà, create bucket, donc là
00:42:05 :vous créez votre bucket, donc là vous voyez vous avez un espace en ligne, vous pouvez uploader desfichiers comme vous voulez, mais bon là c'est pas ce qu'on va faire, nous ce qu'on va faire c'estqu'on va balancer les fichiers CSV directement dans le bucket, les permissions, donc pour ça il suffit
00:42:24 :juste de, pipeline display, ça c'est un truc que j'ai fait tout à l'heure, j'ai fait exprès de mettre au hasard destrucs pour vous montrer, vous allez avoir besoin de access key, secret key, donc ça c'est, ça vient devotre compte AWS depuis l'utilisateur que vous avez créé, je ne vais pas vous le montrer là
00:42:48 :maintenant, mais sachez que voilà, ça se récupère facilement, si un jour vous voulez le faire,n'hésitez pas à poser la question, le bucket name, donc là le bucket name, il faut mettre le nom denotre bucket, donc c'est celui là, et ici c'est le compte ID de votre compte AWS, pareil ici c'était
00:43:14 :notre clé tout à l'heure d'API, donc ça je vais aller le mettre dans les trucs ici à côté,je vais aller récupérer les trucs, je le fais à côté, pour pas que vous voyez les vrais, les vraistrucs, ok, et moi je l'avais appelé ici, ok ça marche, ça marche, voilà, et donc maintenant on va faire,
00:44:04 :on va se créer un script qui maintenant va faire, il va charger, en fait il va uploadautomatiquement nos fichiers CSV dans le bucket, donc load.s3, je vais le mettre load.bucket plutôt,
00:44:27 :bon ça c'est un script que j'avais fait tout à l'heure, pour discuter avec, alors les buckets c'estspécifique à AWS, le nom bucket je crois, mais en fait dans tous les fournisseurs de cloud computingcomme Google Cloud, même Linode et tout ça, t'as ce qu'on appelle un object storage qui permet de
00:44:56 :faire ça, donc après ça va peut-être varier un petit peu, mais les stockages comme ça de fichierstu peux le faire un peu dans tous les, faut savoir que voilà tu payes le stockage, là notamment pourAWS pendant un an t'as un compte gratuit, donc tant que tu dépasses pas je sais pas combien de gigas
00:45:14 :tu payes pas, mais après tu payes vraiment très très peu, je pense que c'est centième d'eurosau gigaoctet, tu vois donc il faut contrôler les coûts, mais ça coûte vraiment pas grand chose,je t'en prie. Ok donc ça je vous montre un petit peu le truc, mais il y a de la documentation
00:45:35 :accessible, donc là on utilise notre config parser pour aller chercher les datas de AWS, donc c'estce que je vous ai montré tout à l'heure, et on utilise la bibliothèque botto3, c'est la bibliothèquePython qui permet de discuter en fait avec les buckets AWS, il suffit ensuite de se créer un
00:45:55 :client, donc là on se crée un client de type S3 et on lui donne les différents accès dont il abesoin, et ici vous voyez il suffit juste de faire S3 upload file data.csv, donc ça c'était ce que
00:46:06 :je faisais tout à l'heure quand j'ai fait mon exemple, nous ce qu'on peut dire, on va dire onva faire un import import os et puis on va faire import fn match, on va aller un peu récupérer,on va scraper notre dossier, puis on va aller récupérer tous les csv qui sont de cette forme
00:46:29 :là, donc on va dire, ça je vais pas le faire tout de suite, comme ça on va pouvoir tester, je vaismême utiliser le debugger comme ça vous verrez, alors on va dire for csv file in os, on va mettrefn match.filter os listdir, et puis là je vais mettre tout ce qui est, en fait c'est imaginer
00:47:00 :qu'on veut récupérer tous ceux qui sont 2024, 2024 étoile csv, on va pas upload file comme ça,ici je vais d'abord mettre, je vais faire salement, je vais juste faire un print du csv file pour êtresûr que c'est bien ça qu'on veut, je lance mon script, python en mode interactif, python load bucket,
00:47:37 :donc là il va bien aller récupérer mes trois fichiers csv que je veux, donc c'est bien ça marchebien, et donc je peux ici faire upload, donc là vous allez voir que pour l'instant on n'a rien dansnotre bucket, voilà on n'a rien dans le bucket, et si maintenant je lance mon script, si je mets
00:48:00 :à jour, on a bien nos fichiers qui sont dans le bucket, qui sont accessibles en lignepar nos scripts, moyennant les accès, mais voilà donc si je vais voir là dessus, après je peuxaller voir, on a des infos sur le truc, on a peut-être le versionning, on peut l'ouvrir je
00:48:22 :crois, il me dit quoi, bloquer, autoriser, en fait on peut juste le télécharger aprèsfacilement, et ici object url, c'est quoi ça, bon c'est pas grave, voilà donc on a maintenant, on remplitnotre bucket avec plusieurs fichiers, et en fait ce qu'il faudrait imaginer après, c'est queon aurait dans notre pipeline data, en fait on ferait notamment avec Apache Airflow, donc ça je
00:48:56 :pourrais vous montrer peut-être la prochaine fois, on pourrait aller parcourir le bucket, récupérertoutes les infos, et chaque fichier csv on pourrait le balancer dans une database, donc je vous proposequ'on fasse ça la prochaine fois, donc en gros l'idée ce serait de mettre en place Apache Airflow,Apache Airflow c'est un orchestrateur de pipeline, en fait il nous permettrait de faire ce qu'on a
00:49:23 :fait mais automatiquement, ça veut dire qu'à chaque fois que j'aurai un nouveau fichier csvqui apparaîtrait dans mon dossier, je le prendrai, je le balancerai sur mon bucket, et après dans lebucket j'irai l'uploader dans ma database, et le Apache Airflow ce qu'il pourrait faire aussi c'estvous voyez le get data, en fait il pourrait lancer quotidiennement le script, donc il lance le script
00:49:48 :quotidiennement, il récupère les fichiers, il crée les fichiers csv, il les balance dans lebucket Amazon, et il va prendre les fichiers dans le bucket Amazon et il les upload dans la database.
00:50:02 :Voilà un petit peu le plan, j'ai peut-être été un peu vite, j'ai pas vu beaucoup de réaction,donc je sais pas trop ce que ça vous parle, voilà j'ai pas envie de me lancer maintenantdans la mise en place du Apache Airflow parce que ça prend un peu de temps et puis si je fais ça vite
00:50:35 :fait ça va être n'importe quoi, mais est-ce que dans le principe, est-ce que c'est clair pour vousdans le principe en fait ce qu'on fait, je regarde déjà, fn match c'est pourquoi, ah oui en fait fnmatch c'est pas mal ça permet de filtrer, je vais juste faire, merci pour ta question Ludo,
00:50:59 :je vais vous montrer un exemple, fn match, filters, démo.py, alors import fn match, je vais me créer des fichiers csvqui n'ont rien à voir, donc on va dire, voilà donc là on va, je vais les un peu arbitrairement, je vaisdire, tu vois lui par exemple il est 2025, lui aussi, rename 2025 et puis on va dire 2024 US,
00:51:44 :voilà, en fait fn match ça permet de filtrer un peu facilement quand tu parcours un dossier,imagine que, pas de soucis hein Gabriel, imagine que tu veux récupérer tous les csv de ton dossier,donc là tu vas dire import US, tu vas dire import lmin fn match US, attends j'écris ça puis après
00:52:17 :je t'explique, là tu vas dire, en fait si je fais ça, je vais récupérer tous les fichiers, exactementtous les fichiers csv, fn match, je vais récupérer absolument tous les fichiers csv, et tu vois si j'avais pas miscsv et que je mets pas de filtres en fait, normalement je vais récupérer absolument tous les fichiers, oulala j'en ai récupéré 0,
00:52:46 :en fait étoile ça remplace n'importe quel caractère, donc si je fais ça, je récupère absolument tous les fichiers,mais typiquement, ouais, mais c'est un peu plus propre que n'swiz, parce qu'en fait n'swiz tu peux juste dire tous les fichiers csv,imagine que toi en fait tu veux pas tous les fichiers csv, tu veux uniquement les fichiers csv qui sont de 2024,
00:53:06 :donc pour ça, tu pourrais dire tous ceux qui commencent par 2024, après tu sais pas ce qu'il y a après, tu sais pas quel jour,et tu sais juste qu'ils commencent par 2024, donc si je fais ça, je vais récupérer exactement tous les fichiers csv qui commencent par 2024,
00:53:23 :après on peut imaginer d'autres trucs, si tu veux juste les 2025, tu fais ça, donc là t'as juste les fichiers qui commencent par 2025,et un truc un petit peu plus puissant, imagine que tu veux tous les fichiers 2024, mais qui sont que US, donc tu vas dire 2024,
00:53:42 :suivi de n'importe quoi, tu sais pas ce qu'il y a, mais tu sais qu'ils finissent tous par US, donc tu vas faire comme ça, et après il y a encore quelque chose,tu vois, t'as 2024, n'importe quel caractère, US, et après n'importe quel caractère, parce que ça peut être copie 2, copie 3, machin,
00:54:11 :mais bon voilà, je le trouve un petit peu plus convivial qu'un regex, ça fait des trucs moins avancés que regex, mais ça reste pas mal,tu vois, si j'avais pas mis le US, j'aurais récupéré tout, tu vois, je récupère tous les 2024, mais j'ai les FR, US, DE,si là je mets FR, je récupère uniquement le fichier .csv que je veux. Voilà, c'est à ça que sert FnMatch, franchement je m'en sers vraiment pas mal quand je parcours des dossiers etc,
00:54:49 :c'est plus simple que la regex, surtout quand en fait...Sous-titres réalisés para la communauté d'Amara.orgEst-ce que là c'est revenu ? Ok, désolé, oui, désolé, merci. Donc ce que je disais, ouais, en fait le fait d'utiliser FnMatch et pas une regex,
00:55:53 :c'est que ça permet d'intégrer directement dans le parcours, vous voyez en fait, au lieu de, si j'avais fait une regex, au final j'aurais dû quand même parcourir tous les fichiers et les tester,mais en fait le fait d'utiliser FnMatchFilter, il me réduit directement le nombre d'éléments, je sais pas si je suis clair, mais c'est un peu une regex intégrée.
00:56:29 :Voilà un peu pour, je sais pas, dites-moi vraiment, c'est important de savoir si ce que je vous ai montré là avec le AWS et le bucket etc, si c'est trop abstrait pour vous,si c'est des choses qui ne vous intéressent pas, ou si vous préférez faire du script pur, ou d'autres choses, parce que bon là, je sais pas si vous imaginez, mais j'ai pas compté combien de séances de mentorat on a fait jusqu'à maintenant,
00:57:26 :mais voilà, si vous me dites non, on n'aime pas trop ce genre de mentorat où on n'arrive pas à suivre, dites-le moi.Par du graphique, ok. Merci pour la proposition, on pourra faire ça la prochaine fois. Est-ce que tu connais toutes les bibliothèques, Ratorian, Matplotlib, Plotly et tout ça ?
01:00:22 :Ok, très bien, je regarderai aussi. C'est pas mal aussi, parfois quand on découvre des choses ensemble, Pyform.Oh, joli !Ça a l'air un peu comme même fonctionnement type PySide et tout ça, mais ok, on va voir.
01:00:56 :Ça a l'air sympa.Ouais, effectivement, ça a l'air d'être du Ubuntu ça.C'est très très probable.Ouais, c'est quoi ta question, Ratorian ?Sur un fichier .mde
01:01:42 :Ok, base de données, access, c'est quoi, c'est des trucs Windows ça ?Ouais, attention, parce que ça souvent c'est des langages propriétaires, donc c'est souvent pas accessible depuis l'extérieur.
01:02:15 :Mais vas-y, pose ta question.Si t'as une question en particulier hors mentora, n'hésite pas à la poser sur le site.Mais c'est quoi ta question ? Excuse-moi, je te coupe peut-être.
01:02:40 :Récupérer des données pour les exporter.Alors, je t'avoue que base de données, access, j'utilise absolument pas.Ça me parait compliqué quand même, parce que les bases de données, access, après si elles tournent, pourquoi pas.
01:03:07 :Un peu, on peut faire ce genre de trucs, parce qu'elles sont déjà compilées.A voir, t'as déjà regardé ce genre de script, où en fait ça c'est typique d'une connexion sur une database.
01:03:38 :A voir avec ça si tu peux y accéder.Si tu veux.Et en fait après, une fois que t'es connecté, pas de soucis Ludovic, merci, bonne soirée.
01:03:52 :Essaye ça si tu veux, je te mets ce truc là un peu bidon.Normalement tu peux essayer ça, mais honnêtement j'ai jamais fait.A partir de là, bien sûr j'ai déjà fait, parce que c'est une connexion classique à une base de données depuis Piston.
01:04:25 :Par contre ça, la connexion ici, je sais vraiment pas ce qu'il va se passer.Mais essaye.Et une fois que t'as ça, tu fais un fetch all et tu récupères toutes tes lignes et après tu fais tout ce que tu veux.
01:04:36 :Mais il faut passer par là.Essaye et puis n'hésite pas à poser la question si t'as un problème.Oui, s'il y a.Allo ?Oui, oui.
01:04:50 :Bon, je ne sais pas, j'essaye de...L'application que je tiens à faire pour me relever pour l'envoi automatique, c'est bon.Donc je l'ai fait sur Windows.
01:05:03 :Mais là je veux déployer sur Linux côté production.Mais j'ai du mal à installer le Python 3.2, je ne sais pas, sur une distribution Red Hat Linux.
01:05:15 :Ok. Et c'est quoi ton problème quand tu fais un...D'abord, parce que je...Au fait, je crois que c'est lié parce que c'est un système d'entreprise.
01:05:28 :Donc il faut une souscription, il m'a dit, la souscription de Red Hat.Mais j'ai emmené celui du fournisseur du truc.Il m'a dit qu'on n'a pas de souscription actuellement pour la boîte.
01:05:41 :Donc j'essaie de l'installer...Red Hat est une solution payante.Oui.J'essaie de l'installer via le source code.Mais des fois il y a des librairies qui me disent OpenSSL.
01:05:56 :Ok.En fait, c'est une distribution Red Hat.Oui, Red Hat.Et ça, c'est une...Allo ?Oui, oui, je suis en train de réfléchir.Ton problème c'est sur la distribution Red Hat ou c'est plutôt sur l'installation de paquets comme Python ?
01:06:18 :Non, juste Python d'abord.Je veux juste installer Python, créer mon environnement virtuel,après déployer les librairies Django et tout ce que...Et quand tu fais le truc du type apt install Python, t'as un problème ?
01:06:29 :Non, ça marche pas, ça marche pas.C'est quoi ton message d'erreur ?Si je mets YUM, par exemple, c'est YUM.Sur le date, YUM install.
01:06:39 :Et tu mets le truc.Il me dit clairement qu'il n'y a pas de repo,qu'il n'y a pas de souscription, machin, tout ça.Et tout ce qui est update, etc., quand tu fais sur une distribution Linux,
01:06:53 :tu n'as pas ça parce que souvent, quand tu es sur une distribution toute neuve...Oui.Moi, je l'étuiais.Je l'étuiais avec juste un système sans restrictions ni...
01:07:02 :A la maison, ça marche.J'arrive à l'installer sans problème.Mais avec l'image ISO de la boîte, j'ai vraiment des soucis.Ah oui, mais peut-être qu'il ne faut pas un accès route aussi pour faire ça sur...
01:07:15 :Oui, j'excuse le route.Mais je pense, ils me disent qu'il faut une souscription en fait.Parce que c'est genre, ils ont acheté la licence.Oui.
01:07:24 :Donc, il faut une souscription en fait.Ok.Écoute, si...Je ne sais pas, il y a un IT ou quelque chose comme ça ?Oui, je l'ai envoyé.
01:07:34 :Donc, j'attends son retour en fait.D'accord.Et puis, si tu as toujours un problème, mets-le sur les questions.Et oui, tu as vu la question de The Crow.
01:07:46 :Quand tu fais Python version, tu n'as rien installé déjà de base ?Pardon ?Si tu vois sur mon écran là, quand tu fais Python...
01:07:57 :Oui, il y a Python 2.1 qui est installé par défaut.Et si tu fais ça, parce qu'en fait, sur les nouvelles distributions,quand tu fais Python, il te met Python 2.7 ou quelque chose.
01:08:08 :Mais si tu fais Python 3, tu as aussi quelque chose.Je n'ai pas essayé ça.Essaye ça, parce que peut-être que tu as un Python 3 qui est déjà installé par défaut.
01:08:17 :J'ai juste mis Python version là et il m'envoie Python 2.Oui, mais essaye avec Python 3.Ça marche, ok. Je vais voir.Ok, je vais voir.
01:08:27 :Oui.Et aussi, peut-être, je ne sais pas, sur le OpenAI,parce que moi, je l'utilise un peu des fois à 4GPT, si j'ai des soucis.
01:08:39 :Mais je ne sais pas, OpenAI, comment l'avoir ?Je ne sais pas comment ça marche.En fait, il faut se créer un compte OpenAI.C'est un site internet, donc tu fais login.
01:08:55 :Là, j'ai déjà un compte, mais tu as l'API OpenAI ici.Et là, en gros, tu te crées un compte.Et puis après, il suffit, entre guillemets, de te créer une clé d'API.
01:09:10 :Et puis tu pourras faire un peu comme ce qu'a montré Gabriel au début.Pour pouvoir accéder, pour discuter avec l'AI depuis un script.Oh, d'accord.
01:09:25 :Donc, genre, c'est plus fluide que 4GPT ?Ce n'est pas une question de plus fluide.C'est juste que là, c'est une API.Donc, ce n'est pas...
01:09:35 :Tu vois, typiquement, quand Thibaut met à disposition une intelligence artificielle sur Dockstring,il utilise l'API.Ok.Parce qu'il veut discuter directement.Ce n'est pas comme quand tu ouvres un prompt.
01:09:52 :En gros, tu auras la même chose.Parce qu'en plus, tu peux choisir le moteur.Tu vois ici, tu choisis le moteur.En fait, sur l'API, tu peux choisir ton moteur, etc.
01:10:02 :Et tu auras typiquement les mêmes réponses.Mais c'est juste que tu peux l'intégrer dans ton site web.Ok, ok.Et puis là, il peut faire ce qu'il devait faire.
01:10:12 :Voilà, c'est ça.Tu auras...C'est juste...C'est une interface qui est différente.D'accord.Ok.Et tu as vu sur le lien qu'a mis The Crow ?
01:10:23 :Oui, j'ai vu.Merci.Merci.Je vais essayer ça.Je vais...Je vais essayer ça.Voilà, exactement.Tu as la souscription manager là.C'est ça qu'il me demande.
01:10:37 :C'est exactement ça qu'il me demande quand j'essaie d'installer le truc.Oui, souscription manager, repo.Oui, oui, oui.C'est ça qu'il me demande.Ok.Oui.Mais c'est pour ça que je voulais te le dire.
01:10:51 :Parce qu'il y a un moyen d'installer via le source code.Là, tu télécharges le zip.Tu dészippes.Après, tu configures, tu installes, etc.C'est ça que j'ai essayé.
01:11:07 :Mais ça ne me caille pas.Regarde ce lien.Ça a l'air intéressant, je pense.Ça marche, ça marche.Je vais essayer de pas courir voir ce que c'est là.
01:11:18 :Ok.Oui.Attendez, je vais arrêter le partage d'écran parce qu'il fait dingue.Bon, écoutez, j'ai bien retenu.Pour le graphique, on verra.On fera du screen read.
01:11:42 :Oui, question ?Tu m'entends ?Oui, je t'entends.Je t'entends écrire.T'as hébergé sur quoi, l'échelle d'Olivor ?J'ai un petit VPS sur Linode.Linode ? Ok.
01:12:18 :J'ai vu qu'il y avait, comment ça s'appelle ?J'ai perdu le nom.C'est quoi les hébergeurs ?Infomaniac ?L'émergement de ça forcément avec le nom de domaine et tout.
01:12:35 :Avec d'Olivar directement ?Oui.Et tu peux l'ajouter directement dessus.Ah, ok.C'est bien.Et comme ça après, tu fais le nom de domaine et après tu te connectes dessus.
01:12:44 :En fait, j'ai un VPS sur Linode sur lequel j'ai mis Caprover.Je ne sais pas si tu te souviens.C'est Quentin qui nous avait parlé de ça.
01:12:57 :Ça permet de déployer des images assez facilement.J'ai installé Caprover sur mon VPS.Et depuis Caprover, j'ai déployé d'Olivar.Ok.Je vais voir.Avec une image Docker en fait.
01:13:11 :Je l'ai mis en local sur mon Ubuntu et j'ai galéré là.Ils ont fait des mises à jour.J'ai cherché partout.Ce n'était pas le problème et tout.
01:13:18 :Après, j'ai trouvé la solution.Oui, c'est vrai que c'est un peu galère.Mais à chaque fois que je trouve une solution, je trouve un truc.
01:13:23 :Je le note sur le OneNote.Si un jour, je retrouve l'erreur, je le lance en OneNote.J'ai toutes les commandes pour le réinstaller.Oui, surtout quand tu commences à…Surtout qu'Olivar est en prod et que tu as plein de data clients, etc.
01:13:35 :Au début, ils avaient fait une erreur.Il fallait que tu refasses la base de données à la main.Enfin, refaire.Tu reconnectes la base de données avec un mot de passe route.
01:13:47 :Et après, ces derniers mois, ils ont rechangé le truc.Maintenant, c'est un autre truc.Ils sont plantés de l'UTF-8.Ils ont mis le mauvais lien de l'UTF-8.
01:13:56 :Ah bon ?Ils ont mis un autre UTF-8 et ça a foutu la merde.Ah putain.Donc en fait, tu retournes dans les fichiers pour changer l'UTF-8.
01:14:04 :Ah oui ?Oh putain, c'est le bordel.C'est le bordel.Heureusement qu'il y a des mecs qui mettent des issues sur Github et tout.La communauté, elle est quand même bien.
01:14:18 :Mais c'est vrai que c'est un peu embêtantquand tu as ton truc en production avec une databasequi commence à se remplir avec des factures, etc.
01:14:25 :J'ai vu des erreurs sur Internet.C'était genre, dès que les mecs changeaient de version,ils avaient ce genre d'erreur.C'est classique.Après, c'est un nouveau truc.
01:14:35 :Et toi, tu vas le mettre en production, ton truc ?Pour l'instant, non.Pour l'instant, je suis en train de le tester, voir tout ce qu'il peut faire.
01:14:41 :Mais après, je serai obligé de le mettre plus ou moins en production.Après, je suis devenu indépendant.Oui, parce qu'en plus...C'est juste pour tester après la partie mail, si ça envoie correctement, etc.
01:14:52 :Parce que là, quand tu es en local,il faut que tu aies tout le système pour envoyer correctement les mails.Oui, ça marche bien.Même en local, je pense que tu peux configurer ton SMTP, etc.
01:15:02 :C'est ça, il faudrait que je le configure et tout.Oui, mais moi, j'ai tout ça en place.Ça fonctionne très bien.Regarde, juste pour tester ce que ça donne.
01:15:12 :Vas-y.Non, c'est pas mal, franchement.Oui, franchement, c'est bien fait.Les liens et tout sont bien.Et puis, moi, j'avais testé plusieurs CRM.C'est le mieux que j'ai trouvé parce que...
01:15:25 :Il y en a plein qui parlent du truc payant en France.Le truc payant, c'est...Comment ça s'appelle ? C'est ABI ?Oui, c'est celui-là que j'avais.
01:15:35 :Mais il est connu, celui d'ABI aussi, il est connu.Mais après, il est en partenariat avec la banque Shine.Après, sinon, tu avais...ABI, c'est le...
01:15:46 :C'est marqué que c'est le...En gros, c'est le gestionnaire pour les micro-entreprises.Oui, d'accord.Pour l'auto-transporteur.Il y a Odoo qui te permet aussi de faire ça.
01:15:57 :Et tu peux le déployer aussi via Odoo.Ah oui, c'est vrai, il y a Odoo aussi.J'ai vu ça Odoo aussi.Ça peut être pas mal aussi, Odoo.
01:16:03 :Oui, c'est pas mal.Tu as plein d'applications dispo.Tu peux faire ton site web à partir de Odoo et tout ça.J'ai vu que même le IBA te le fait aussi.
01:16:12 :Oui, tu peux le faire, oui.J'ai vu, j'avais modifié un petit peu le site.Et par défaut, j'avais testé pour voir.Tu as une gestion de tickets, etc. aussi qui est pas mal avec Odoo.
01:16:22 :Oui, j'ai vu ça, oui.Mais oui, c'est pas mal.Brisez pas, si jamais tu as des questions.Je me suis un peu cassé les dents aussi sur ce truc-là déjà.
01:16:35 :Peut-être que j'ai déjà eu le même problème.Après, pour l'instant, je teste tout pour voir ce que ça donne avant de...De toute façon, il faut tout tester déjà avant.
01:16:45 :Et puis voir si ça plaît ou pas, de toute façon.Je crois.Moi, j'aime bien tester tout et voir c'est quoi les limites.Oui, moi aussi.
01:16:52 :Moi, au boulot, je fais des trucs, des trucs.Après, quand j'ai un script, je fais, allez, je vais faire un script.Sur mon GitHub, j'ai un exemple de script que j'ai fait au boulot.
01:17:03 :Ah oui ?Tu nous le mets.C'est le Data Excel.Après, c'est un truc, c'est un data.En gros, c'est le truc que je t'avais demandé pour...
01:17:12 :Comment on fait pour récupérer les données sur un Excel.Et t'as posé cette question.Maintenant, ça me fait les deux fichiers d'import de masse automatiquement.
01:17:22 :OK.Oui, c'est un petit script.Au boulot, ils ont juste à cliquer deux fois dessus.Ça lance une invite de commande.Et ça le fait automatiquement.
01:17:34 :C'est bien.Mais c'est privé ou tu le mets en public ?Alors là, je l'ai mis en public, mais j'ai fait un exemple.OK.Les vraies données du boulot ne sont pas dedans.
01:17:44 :Oui, bien sûr.Mais n'hésite pas à partager ce genre de petit script.Moi, je suis très friand de voir ce que vous faiteset puis de pouvoir le montrer en Montora.
01:17:52 :C'est intéressant.Oui, c'est un truc qui est tranquille.Après, il peut être encore amélioré.Bien sûr.J'ai fait au mieux.Et en même temps, je me suis amusé à utiliser Codium dedans.
01:18:05 :Pour voir ce qu'il racontait.Ah oui ?Oui, je me suis amusé pour voir qu'est-ce qu'il me sortait comme information.Et des fois, il fait non.
01:18:12 :C'est non, c'est de la merde.Oui, des fois, c'est bien.Mais sinon, en fait, il fait beaucoup en se basant sur ce que tu as déjà écrit.
01:18:18 :J'ai remarqué.Oui, mais c'est comme j'ai fait...Je me suis amusé à faire une interface aussiavec Pitesaim.Pitesaim.Non, Pitesaim.Oui, Pitesaim aussi.Mais avec Pitesaim 6.
01:18:28 :Oui.Qui fait générer des mots de passe aléatoires.Oui.Et en fait, je choisis la longueur.Je choisis si je veux mettre des chiffres.Je choisis si je veux mettre des caractères spéciaux.
01:18:40 :Et après, ça génère automatiquement le mot de passe.OK.Et en fait, j'ai fait avec Codium pour voir qu'est-ce qu'il me mettait en place.Et il y a plein de trucs qu'il mettait trop bien.
01:18:50 :Oui, c'est marrant.Je ne vais pas casser la tête.Quand j'ai fait les coalexiums, il les a faits tout seuls.J'ai fait oui.À un moment, il y a eu un truc où c'est mort.
01:18:59 :C'est qu'il appelait tout le temps la connexion.Il l'appelle alors que je ne demande pas de l'appel.Il le met par défaut.Oui, souvent, il décrit les trucs que tu as déjà écrits.
01:19:08 :Oui.C'est pas mal.Oui, peut-être ça.Et en même temps, j'ai Sourcerie en même temps.Oui, on en avait parlé.Et Sourcerie a beaucoup évolué en fait.
01:19:19 :Il y a beaucoup de quoi ?Il a beaucoup évolué, Sourcerie.Sourcerie, avant, ça faisait juste lire ton code et l'optimiser, plus ou moins le factoriser.
01:19:30 :Oui.Mais maintenant, tu as même une IA avec.Ah oui ?Et c'est payant ou c'est gratuit ?Non, c'est gratuit.Ok.Je regarderai aussi.
01:19:38 :Et en fait, tu peux lancer l'IA et puis tu dis par exemple, tu sais que ça me forme,tu formats ça, crée-moi un docstring, etc.
01:19:47 :Et ça, il te les fait.Ah oui ?Un peu comme Codium, quoi.J'ai deux pour, un pour créer une IA automatiquement et l'autre qui me permet de factoriser,simplifier mon code.
Aucune occurrence trouvée pour « ».