Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Dans cette partie on va récupérer les horaires pour un film et ensuite on verra comment récupérerles horaires de tous les films et récupérer tout ça dans un seul grand JSON qu'on va stocker surle disque. Si on va voir sur un film, donc là je suis allé sur n'importe quel film,
00:00:12 :vous pouvez prendre n'importe lequel, on va voir la même chose que sur la page principale c'est àdire que si je désactive le javascript je n'ai aucune information. Donc là je vais réactiver
00:00:21 :le javascript et si je vais voir dans l'onglet network, donc en faisant un clic droit inspect,on va voir qu'on a le même phénomène ici qui se passe si j'actualise la page, c'est qu'en filtrantpar fetch xhr ici j'ai une url qui me permet de récupérer toutes les informations dont j'ai
00:00:37 :besoin. Donc on a les jours, on a les cinémas, on a les sessions avec le format, on va avoir l'heureaussi et le cinéma concerné et si je réduis tout ça vous voyez qu'on a les différentes dates. Donc
00:00:49 :on a tout ça dans un dictionnaire days, on va voir la date d'aujourd'hui donc ici en portugaison a la date de demain et ensuite les dates des prochains jours donc ça correspond aux trois datesqu'on a ici. Et à chaque fois on a pour chaque cinéma les indications avec la durée, le temps
00:01:05 :etc. Et pour finir on a les régions donc moi il y a une seule région qui va m'intéresser ici c'estla région du grand porto donc ça on va pouvoir également filtrer grâce à cette région. Donc
00:01:15 :vous pouvez si vous voulez faire un script qui va récupérer toutes les régions, moi dans ce cas cije vais faire un autre filtre par cette région parce que c'est la seule qui m'intéresse. Donc
00:01:23 :dans ce dictionnaire qui nous est retourné on a juste deux choses les jours et les régions. Larégion on n'est pas obligé de la récupérer on a juste besoin de son identifiant ici donc ça onpourra le stocker également dans notre fichier d'environnement et ensuite on va vouloir récupérer
00:01:35 :les séances avec le days ici. Donc on a notre url ici que je vais pouvoir copier et qu'on va donnerà notre intelligence artificielle pour faire le script. Ce que j'ai fait aussi c'est que j'ai
00:01:46 :créé un dictionnaire dans un fichier JSON donc un grand dictionnaire qui va contenir tout ce dontj'ai besoin et c'est le format qu'on va donner à l'IA parce que là encore si on ne lui donne pasun cadre à suivre il y a dix mille façons de représenter ces données. Donc nous on veut
00:02:01 :avoir les données d'une certaine façon que j'ai définie ici donc on veut la date de l'export etensuite on veut tous les films donc dans export date on a juste la date qu'on va mettre en formatISO 8600A, ça sera plus facile après par la suite avec ce format de l'afficher sur le site web. Et
00:02:18 :dans movies ici je vais avoir un dictionnaire avec à chaque fois les différentes informationsdonc on a une liste et dans chaque élément de la liste j'ai un dictionnaire avec l'url du film,les métadonnées qu'on a déjà récupéré donc les métadonnées qui contiennent le titre, l'imagedu film, le format etc. Et ensuite dans schedules ici je vais avoir toutes les données d'horaire
00:02:38 :pour tous les jours donc ça c'est ce qu'on va récupérer avec l'url qu'on a vu il y a quelquesinstants. Donc on va voir la date de la séance et ensuite pour chaque date on va voir tous les
00:02:47 :cinémas avec le nom du cinéma et toutes les sessions donc par exemple dans un des cinémason aura cinq sessions à midi, dix heures, midi, quinze heures etc. avec les différents formats
00:02:56 :puisque là aussi on peut avoir des formats différents, on peut avoir une session qui vaêtre en 2D, une session en 3D, en Atmos etc. Donc c'est l'objectif que j'ai donné, j'ai toutes
00:03:06 :les infos comme ça dont j'ai besoin à savoir la date de la séance, le nom du cinéma, l'horaire,le format et toutes les métadonnées du film que je vais pouvoir afficher également sur le siteweb. Donc on va réutiliser notre IA à partir de ça, on va lui donner en fait ce fichier objectif
00:03:19 :en exemple pour qu'il puisse créer ce dont on a besoin. Je vais également créer un nouveaucomposer, là on commence à voir pas mal de choses ici donc je vais faire un nouveau composer avecle fichier objective.json puisque là on veut repartir un peu de ce qu'on a actuellement et
00:03:34 :ne pas avoir l'historique et on va juste modifier ce script pour pouvoir récupérer les informations.Là je vais lui dire je veux récupérer les horaires des films, j'ai un end point donc je vais luidonner le end point ici à partir de cet end point et on va aussi lui faire un autre fichier en fait
00:03:53 :parce qu'il faut lui donner un exemple de ce qui va être retourné dans le end point. Donc je vaisretourner ici dans Brave, dans Response, je vais tout copier, c'est peut-être un petit peu long,non ça va, il n'y a pas trop de séances donc on va prendre tout ça et on va lui créer un fichier
00:04:08 :pour qu'il voit en fait à quoi ressemblent ces données parce qu'il ne peut pas faire de requêtesdirectement sur internet. Donc on va retourner sur Cursor et on va lui donner ici dans un fichier,
00:04:17 :je vais dire end point result.json et je vais lui donner tout ça ici. Donc je vais dire à partir decet end point on récupère les données qui sont dans, donc là on va faire un at end point result.json
00:04:32 :donc là il l'a bien rajouté dans notre requête et je veux filtrer ces données pour les affichertelles que dans objectif.json. Donc là aussi on va faire un at objectif.json. Je vais résumer
00:04:48 :donc ce qu'on a, on a déjà ce qu'il faut pour récupérer les urls des films avec les métadonnéeset nous ce qu'on veut c'est rajouter là dedans les horaires. Donc je vais le dire cette fois-ci
00:04:56 :à l'oral. On a déjà dans le script la partie qu'il nous faut pour récupérer les données des films,avec leurs métadonnées. Je veux maintenant pour chaque film récupérer les horaires et récupérer
00:05:07 :tout ça au final dans un seul dictionnaire qui ressemblera à objectif. Et là à la placed'objectif on va dire objectif.json. Donc ça fait pas mal de choses, vous voyez ici on a pas mal de
00:05:22 :données dans le end point, dans l'objectif. On va essayer avec ça, je garantis rien, il y a quandmême pas mal de choses à faire et on va voir ce qu'il nous fait. Donc là on voit qu'il analyse
00:05:30 :le fichier, il va donc examiner le code et créer une fonction pour gérer les horaires. Donc c'estbien, il va déjà tout ranger dans une fonction distincte. Donc là pendant qu'il réfléchit à
00:05:38 :la suite on peut regarder ce que ça donne ici. Donc getMovieSchedule, on va passer la sessionet MovieId. Donc la session ça va être la session de request, donc c'est bien parce que comme ça on
00:05:48 :va pas la recréer à chaque fois. Donc il a déjà anticipé ça, donc parfait. Et ensuite le MovieIdça va être l'identifiant unique qui va nous permettre, puisque si je regarde bien là il mesemble, dans l'url on a l'identifiant unique, donc le MovieId qui est disponible dans les
00:06:04 :données qu'on a déjà récupérées, qu'il va concaténer avec cette url pour récupérer les données de cefilm en particulier. Donc ensuite il refait un grand try-except ici, il va récupérer donc avec
00:06:16 :session.get, il vérifie qu'on a bien un status code qui est égal à 200. On va voir que là aussi onpeut éviter un if, on peut faire un race for error, donc là aussi on verra cette étape dans lerefactoring pour essayer d'avoir un code un peu plus propre, avec moins d'escaliers là encore. Donc
00:06:30 :là qu'est ce qu'il fait, il va récupérer les jours dans les jours, il va récupérer la date,les cinémas, ensuite il boucle sur les cinémas, il va récupérer le nom, le temps, le format, parfait,et il ajoute tout ça. Alors là on a une boucle qui ne semble pas être affichée, je pense qu'il
00:06:45 :affiche peut-être pas tout, et si on a des sessions et bien il ajoute le cinéma et il ajoute leschedule, donc ça a l'air bien. Et ensuite on va aller voir ce qu'il a fait d'autre, donc là j'ai
00:06:55 :tout ça qui est ici, qui est ajouté, donc dans le main il a fait un final data avec le exportdate, avec datetime.now, parfait, et là effectivement vous voyez qu'en fait il n'a pas
00:07:05 :gardé, il n'a pas compris que je voulais garder toutes ces informations ici, donc là on va luidire avant d'accepter qu'il faut qu'il garde les informations, puisque là en fait il est allé unpeu trop proche de ce que je lui avais donné dans l'objectif, c'est à dire que là j'ai mis
00:07:17 :metadata, titre, format, mais voilà j'aurais peut-être pu indiquer qu'il fallait récupérertout ici, et là il ne l'a pas compris, donc vous voyez bien important de vérifier quand même. Donc
00:07:26 :je vais lui dire, c'est parfait, sauf que pour les metadata il fallait garder les metadatad'origine, donc le unique ID, title, genre, synopsis, etc. Je voulais garder toutes ces
00:07:36 :metadonnées dans les metadonnées finales et non pas juste le titre et le format. Parfait, donc jevais lui dire ça pour qu'il modifie. Donc là le format de sortie, ok, je vais revenir en haut,
00:07:46 :on regarde ici, effectivement il a bien remodifié ce qu'il fallait, et on a bien gardé notreGetMovieSchedule, donc je vais tout accepter et je vais revenir dans le code pour vérifier si toutest bon, je vais faire un petit peu de place. Donc on a le GetMovieSchedule avec la session
00:08:00 :Request, le MovieID qui est concaténé ici à la fin. Là on récupère bien tout ce qu'il faut,comme je vous avais dit là on a une boucle 4 qui ne me semblait pas complète, et en fait je penseque c'est parce que c'est, voilà, effectivement c'est une compréhension de liste, donc je pensais
00:08:13 :qu'il y avait une boucle 4 ici qui continuait, je voyais pas les deux points et ce qui était àl'intérieur de la boucle 4, mais en fait on a une compréhension de liste, donc là pour toutes lessessions, dans les Theater.GetSessions, il va récupérer chaque session dans toutes ces sessions,
00:08:27 :et il va récupérer le temps et le format si la session est au format 2D. Donc là encore c'estquelque chose que je ne veux pas, vous voyez on va enlever le IF, parce que dans ce cas-ci pourles horaires je veux vraiment toutes les sessions, puisqu'on va voir le détail de 3D, 2D, Atmos,
00:08:42 :etc. C'était vraiment juste sur la page d'accueil qu'on avait besoin de faire ce filtre sur lessessions 2D, donc là je vais enlever ça, vous voyez là encore il faut bien vérifier parcequ'il a pensé qu'il fallait répliquer cette exclusion dans les sessions, alors que là on neveut pas ça. Donc normalement sur le reste ça a l'air bon, le main il avait pas touché, il avait
00:09:02 :juste la session ici, on récupère les datas avec la date pour la date de l'export, si c'est en 2Dici donc on continue, là c'est bon, on get les Movie Schedule avec le Unique ID, on récupèrebien toutes les métadonnées et on ajoute les schedules ici, et finalement on ajoute tout ça
00:09:19 :dans un dictionnaire, et ça semble bien, et on l'écrit avec le JSON. Donc ça me semble bon,je vais relancer le script et on va voir si ça fonctionne. Alors là on a avec le proxy de
00:09:28 :BrightData, je pourrais l'enlever pour que ce soit un peu plus rapide, parce que par défaut dansnotre variable d'environnement ici on avait mis True, donc là je vais le mettre à False, commeça même quand je le lance directement à partir de Cursor, donc là je vais interrompre, si je le
00:09:42 :lance à partir de Cursor donc sans argument, et bien il va utiliser la variable qui est donc àFalse et donc il ne va pas utiliser de proxy. Donc là ça prend un petit peu de temps et en fait
00:09:51 :c'est parce qu'on n'a aucun aperçu, il manque en fait du logging ici, on ne sait pas ce qui sepasse, vous voyez il y a pas mal de choses qui se passent puisque à chaque fois pour chaque film ilfaut qu'il aille récupérer les informations, et donc quand on n'a pas de logger et bien on ne sait
00:10:05 :pas ce qui se passe, donc on espère que ça va marcher, mais dans la suite il va falloir qu'onrajoute un peu de logging pour ne pas être dans le flou comme ça, et vérifier qu'on a bien quelquechose qui se passe et que les informations sont correctement récupérées. Donc là je vais attendre
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.