Files
TrackTrendsDoc/site/ManuelUtilisateur.html
T
2023-06-09 09:33:05 +02:00

816 lines
48 KiB
HTML

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<meta content="Rohmer Maxime" name="author"/>
<link href="assets/images/favicon.png" rel="icon"/>
<meta content="mkdocs-1.4.3, mkdocs-material-8.5.0" name="generator"/>
<title>Manuel utilisateur - Documentation Track Trends</title>
<link href="assets/stylesheets/main.2e8b5541.min.css" rel="stylesheet"/>
<link href="assets/stylesheets/palette.cbb835fc.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<link href="assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>html.glightbox-open { overflow: initial; height: 100%; }</style><script src="assets/javascripts/glightbox.min.js"></script></head>
<body data-md-color-accent="" data-md-color-primary="" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a class="md-skip" href="#manuel-utilisateur">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="Documentation Track Trends" class="md-header__button md-logo" data-md-component="logo" href="index.html" title="Documentation Track Trends">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Documentation Track Trends
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Manuel utilisateur
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-hidden="true" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<input aria-hidden="true" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
</form>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="Documentation Track Trends" class="md-nav__button md-logo" data-md-component="logo" href="index.html" title="Documentation Track Trends">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
Documentation Track Trends
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="index.html">
Rapport Track Trends V1.0
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="CahierDesCharges.html">
Cahier des charges
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
Manuel utilisateur
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="ManuelUtilisateur.html">
Manuel utilisateur
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#installation">
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#a-quoi-sert-lapp">
A quoi sert l'app ?
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#utilisation-simple">
Utilisation "Simple"
</a>
<nav aria-label="Utilisation " class="md-nav" simple""="">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#recuperer-le-lien-vers-le-flux">
Récupérer le lien vers le flux
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#boutons">
Boutons
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#calibration">
Calibration
</a>
<nav aria-label="Calibration" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#pourquoi-calibrer-lapplication-et-creer-un-preset">
Pourquoi calibrer l'application et créer un Preset ?
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#comment-creer-son-preset">
Comment créer son Preset
</a>
<nav aria-label="Comment créer son Preset" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#creation-des-zones-et-des-windows">
Création des Zones et des Windows
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#ajout-du-nom-des-pilotes">
Ajout du nom des pilotes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sauvegarder-le-nouveau-preset">
Sauvegarder le nouveau Preset
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#load-un-preset-existant">
Load un Preset existant
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#comprendre-les-donnees">
Comprendre les données
</a>
<nav aria-label="Comprendre les données" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#overtakes">
Overtakes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#last-five-laps">
Last Five Laps
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#battles">
Battles
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#driver-infos">
Driver infos
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#live-ranking">
Live Ranking
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#erreurs">
Erreurs
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="jdb.html">
Journal de bord
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" id="__nav_5" type="checkbox"/>
<label class="md-nav__link" for="__nav_5">
Code
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-label="Code" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Code
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="Code/ConfigurationTool.html">
ConfigurationTool.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverData.html">
DriverData.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverGapToLeaderWindow.html">
DriverGapToLeaderWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverNameWindow.html">
DriverNameWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverSectorWindow.html">
DriverSectorWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/F1TVEmulator.html">
F1TVEmulator.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/Form1.html">
Form1.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/SqliteStorage.html">
SqliteStorage.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/Zone.html">
Zone.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DataWrapper.html">
DataWrapper.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverDrsWindow.html">
DriverDrsWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverLapTimeWindow.html">
DriverLapTimeWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverPositionWindow.html">
DriverPositionWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/DriverTyresWindow.html">
DriverTyresWindow.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/OcrImage.html">
OcrImage.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/Reader.html">
Reader.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/Settings.html">
Settings.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/Window.html">
Window.cs
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="Code/recoverCookiesCSV.html">
recoverCookiesCSV.py
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#installation">
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#a-quoi-sert-lapp">
A quoi sert l'app ?
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#utilisation-simple">
Utilisation "Simple"
</a>
<nav aria-label="Utilisation " class="md-nav" simple""="">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#recuperer-le-lien-vers-le-flux">
Récupérer le lien vers le flux
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#boutons">
Boutons
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#calibration">
Calibration
</a>
<nav aria-label="Calibration" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#pourquoi-calibrer-lapplication-et-creer-un-preset">
Pourquoi calibrer l'application et créer un Preset ?
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#comment-creer-son-preset">
Comment créer son Preset
</a>
<nav aria-label="Comment créer son Preset" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#creation-des-zones-et-des-windows">
Création des Zones et des Windows
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#ajout-du-nom-des-pilotes">
Ajout du nom des pilotes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#sauvegarder-le-nouveau-preset">
Sauvegarder le nouveau Preset
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#load-un-preset-existant">
Load un Preset existant
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#comprendre-les-donnees">
Comprendre les données
</a>
<nav aria-label="Comprendre les données" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#overtakes">
Overtakes
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#last-five-laps">
Last Five Laps
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#battles">
Battles
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#driver-infos">
Driver infos
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#live-ranking">
Live Ranking
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#erreurs">
Erreurs
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="manuel-utilisateur">Manuel utilisateur</h1>
<h2 id="installation">Installation</h2>
<p>Pour Installer le projet, il faut aller sur le <a href="https://gitea.parano.ch/Maxluli/TrackTrends">repo</a> qui contient le projet et suivre les étapes indiquées dans le ReadMe. Les étapes ne sont pas répétées ici pour éviter de la redondance et pour éviter de devoir changer cette documentation si les versions ou les dépendances à installer changent.</p>
<h2 id="a-quoi-sert-lapp">A quoi sert l'app ?</h2>
<p>Track Trends est une application Windows qui sert d'outil pour des abonnés de la F1TV qui veulent exploiter le potentiel de la page DATA de la F1TV.</p>
<p>L'application est faite pour un seul cas d'utilisation :</p>
<p>Récupérer les infos d'un Grand Prix en cours ou d'une rediffusion et les afficher de manière plus intéressante (en mettant en valeur des infos, en construisant un historique et en en interprétant d'autres).</p>
<p>L'application est faite pour que l'utilisateur ait le moins de choses à faire pour que tout fonctionne. Cela ne veut pas dire que l'utilisateur n'a rien à faire et le but de ce document est d'expliquer les différentes étapes nécessaires à l'utilisation de l'application.</p>
<h2 id="utilisation-simple">Utilisation "Simple"</h2>
<p>Le but de cette section est de vous permettre d'apprendre à lancer, stopper et modifier les variables de fonctionnement de l'application. Vous serez donc en mesure d'utiliser le programme correctement.</p>
<p>Vous devez commencer par lancer le programme.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/StartPage.png"><img alt="" de="" lancement""="" page="" src="./Images/Manual/StartPage.png"/></a>
<figcaption>"Page de lancement"</figcaption>
</figure>
<p>Au lancement de l'app, vous devriez avoir une page comme ci-dessus. Il y a beaucoup d'infos, mais pour le moment ce qui nous intéresse, c'est le menu en haut à gauche.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/Controls.png"><img alt="" contrôles""="" src="./Images/Manual/Controls.png"/></a>
<figcaption>"Contrôles"</figcaption>
</figure>
<p>Si c'est la première fois que vous utilisez l'application, il est possible qu'il n'y ait qu'un seul preset au lieu des quatre ci-dessous voire 0 si vous n'avez pas mis le preset inclus dans l'installation. Si vous n'avez aucun preset, passez directement à l'étape calibration avant de revenir ici.</p>
<p>Comme vous pouvez le voir, en plus des presets sélectionnables, il y a quatre boutons (dont deux grisés) et une boite de texte avec un lien.</p>
<p>Le lien est la chose la plus simple. C'est le lien du Grand Prix que vous voulez analyser.</p>
<h3 id="recuperer-le-lien-vers-le-flux">Récupérer le lien vers le flux</h3>
<p>Pour remplir la boite de texte précitée, il nous faut un lien et ce lien, on le trouve sur la <a href="https://f1tv.formula1.com/">F1TV</a>.</p>
<p>Quand vous vous rendez sur la F1TV la page principale devrait ressembler à quelque chose comme ça (évidemment le contenu ne sera pas le même) :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/F1TvMainPage.png"><img alt="" de="" f1tv""="" la="" page="" principale="" src="./Images/Manual/F1TvMainPage.png"/></a>
<figcaption>"Page principale de la F1TV"</figcaption>
</figure>
<p>Si vous ne vous êtes pas déjà connecté, connectez-vous et ensuite, allez sur la page du Grand Prix qui vous intéresse.</p>
<p>Pour un Grand Prix en direct, normalement, il y a un endroit où vous pouvez cliquer pour accéder au flux directement, et si vous voulez utiliser un Grand Prix en différé, vous pouvez aller dans "202x Season" ou x est l'année en cours, en l'occurrence 2023. Et là, vous pourrez sélectionner un Grand Prix.</p>
<p>Dans tous les cas, quand vous avez sélectionné votre Grand Prix, vous devriez vous retrouver sur une page de ce style :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/F1TvGpPage.png"><img alt="" d'un="" f1tv""="" grand="" la="" page="" prix="" src="./Images/Manual/F1TvGpPage.png" sur=""/></a>
<figcaption>"Page d'un Grand Prix sur la F1TV"</figcaption>
</figure>
<p>Et ici si vous êtes sur un Grand Prix en direct, vous pouvez directement copier l'URL de la page et si c'est un Grand Prix en différé, vous pouvez directement naviguer avec la barre de progression vidéo du lecteur de la F1TV, Je conseille de la placer juste après le départ. Vous pouvez prendre le lien avant ou après avoir changé le timecode de la vidéo, cela ne change rien, le lien ne contient pas votre progression dans la vidéo.</p>
<p>Ensuite, vous pourrez juste mettre le lien que vous avez récupéré dans la boite de texte que l'on a vu précédemment. Il faut simplement s'assurer que le lien contient bien le terme <code>?action=play</code> à la fin.</p>
<h3 id="boutons">Boutons</h3>
<p>Vous n'avez accès qu'à deux boutons au lancement de l'application. Le premier nommé 'Config' et le second 'Launch'</p>
<p>Le bouton 'Config' permet d'ouvrir la page de calibration (voir section Calibration).</p>
<p>Le bouton Launch permet de lancer le programme. Le texte peut changer (Par exemple en 'Retry' si le lancement a raté) mais son utilité reste la même : Lancer le navigateur virtuel qui sera requis pour traiter les données.</p>
<p>Si vous cliquez sur Launch tous les boutons devraient être grisés, c'est normal. Pendant le lancement du navigateur, l'application ne peut pas être utilisée pour éviter des conflits. Il faut juste attendre. Vous aurez également des fenêtres d'invite de commande qui vont s'ouvrir et se fermer, c'est tout à fait normal et il ne faut pas interagir avec tant que tout ne s'est pas stabilisé.</p>
<p>Vous devriez voir enfin une fenêtre comme celle ci :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/SuspectCmd.png"><img (pas="" alt="" de="" elle="" l'est="" ne="" page="" panique,="" pas)""="" src="./Images/Manual/SuspectCmd.png" suspecte=""/></a>
<figcaption>"Page suspecte (Pas de panique, elle ne l'est pas)"</figcaption>
</figure>
<p>Il ne faut pas fermer cette fenêtre. C'est la seule chose qui nous relie au navigateur virtuel qu'utilise l'application. Il ne faut pas la fermer, par contre, vous pouvez la réduire et la laisser en background, c'est d'ailleurs ce que je vous recommande de faire.</p>
<p>Peu après l'ouverture de cette fenêtre, vous devriez avoir accès à trois boutons.</p>
<ul>
<li>Bouton 'Config' qui fait la même chose qu'avant</li>
<li>Bouton 'Re Launch' qui remplace le bouton 'Launch' qui permet de relancer le processus dans le cas ou vous auriez envie de changer de lien ou de preset.</li>
<li>Bouton 'Start' lance le processus de récupération de données.</li>
</ul>
<p>Si vous cliquez sur ce dernier, vous lancerez le programme. Cela peut prendre quelque secondes à s'actualiser, mais très vite vous devriez vous trouver devant une page comme celle-ci :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/StartOfSimulation.png"><img alt="" du="" début="" programme""="" src="./Images/Manual/StartOfSimulation.png"/></a>
<figcaption>"Début du programme"</figcaption>
</figure>
<p>Vous n'aurez alors qu'un seul bouton disponible : le bouton 'Stop'.</p>
<p>Vous pouvez arrêter le programme quand vous le voulez. ATTENTION : Avant de fermer le programme, merci de stopper d'abord le processus.</p>
<p>Si vous stoppez le processus, vous devriez vous retrouver dans la même situation que juste après avoir lancé le navigateur virtuel :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/Stopeed.png"><img alt="" arrêt="" du="" programme""="" src="./Images/Manual/Stopeed.png"/></a>
<figcaption>"Arrêt du programme"</figcaption>
</figure>
<p>Vous pouvez voir en dessous la dernière image que le programme a décodée et vous avez de nouveau accès aux trois boutons expliqués précédemment.</p>
<p>Quand l'application a été lancée, vous pouvez aussi cliquer sur les données affichées, mais ces comportements sont expliqués dans la section "Comprendre les données"</p>
<p>Voilà ! Vous savez comment lancer, stopper et modifier les variables de fonctionnement de l'application. Maintenant, vous pouvez passer directement à la section "Comprendre les données" si vous voulez apprendre comment utiliser ce que propose le programme ou passer à la section "Calibration" si vous voulez apprendre à configurer l'application et créer des Presets.</p>
<h2 id="calibration">Calibration</h2>
<p>Ici, vous apprendrez à configurer l'application pour créer vos propres presets et surtout pourquoi vous auriez besoin de le faire et à quoi servent ces fameux "Preset". Vous serez en mesure d'adapter le fonctionnement de l'application, qu'elle soit conforme aux différents changements d'interface et de pilotes présents.</p>
<h3 id="pourquoi-calibrer-lapplication-et-creer-un-preset">Pourquoi calibrer l'application et créer un Preset ?</h3>
<p>Le programme que vous allez utiliser utilise de l'OCR (Optical Character Recognition). Cela veut dire que le programme va aller regarder chaque image de la F1TV et convertir ce qu'il y a marqué dessus en données que l'on peut récupérer automatiquement.</p>
<p>Sauf que pour y arriver, le programme a besoin de savoir où se trouve le texte important et surtout quel type de donnée, il est censé trouver à tel ou tel endroit.</p>
<p>Pour être plus précis, il a également besoin de savoir quels pilotes peuvent se trouver dans la course actuelle.</p>
<p>Et pour qu'il sache tout cela, il y a des fichiers de configuration nommés "Presets" qui doivent contenir toutes ces informations. Et pour les créer, il existe la page de calibration qui va demander à un humain de lui fournir les infos qu'il ne peut pas trouver par lui-même.</p>
<p>Normalement, il devrait y avoir un Preset fournis par l'application quand vous la téléchargez depuis le <a href="https://gitea.parano.ch/Maxluli/TrackTrends">repo</a> mais vous pouvez avoir besoin de faire votre propre "Preset" dans deux cas :</p>
<ul>
<li>Quand les pilotes présents ne sont pas les mêmes (Ex : Si un pilote doit être remplacé ou si de nouveaux pilotes sont arrivés ou bien que d'autres aient pris leur retraite)</li>
<li>Quand vous voulez utiliser des Grand Prix fait d'une autre année que celle pour laquelle le "Preset" original a été prévu. (L'année devrait être mentionnée dans le nom du preset)</li>
</ul>
<p>Il est déconseillé d'utiliser ce projet pour des Grand Prix couru avant 2022, car l'interface de la page Data de la F1TV peut avoir trop changé, mais vous pouvez toujours essayer pour voir en faisant votre propre Preset pour des années comme 2021 ou 2020.</p>
<h3 id="comment-creer-son-preset">Comment créer son Preset</h3>
<p>Pour créer son Preset, il faut utiliser la page Settings ou Config de l'application.</p>
<p>Pour y accéder, il faut simplement cliquer sur le bouton "Config" de la page principale et vous serez accueilli par une page qui devrait ressembler à celle ci dessous :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/EmptySettingsPage.png"><img alt="" config="" de="" page="" src="./Images/Manual/EmptySettingsPage.png" vide""=""/></a>
<figcaption>"Page de config vide"</figcaption>
</figure>
<p>La seule différence est que vous aurez sûrement moins de Presets dans la liste des Presets voir, vous pouvez n'en avoir aucuns.</p>
<p>Comme vous pouvez le voir, vous n'avez pas énormément d'options disponibles quand vous lancez simplement l'application.</p>
<p>Vous n'avez accès qu'aux boutons "Start the browser" et "Add","Remove".</p>
<p>On verra à quoi servent ces deux dernières plus tard, mais dans un premier temps, on va se pencher sur le bouton Start.</p>
<p>Vous pouvez voir qu'en plus de ce bouton, vous pouvez aussi rentrer du texte dans la boite de texte "Grand Prix URL" ce qui n'est pas un hasard.</p>
<p>Le but, c'est de mettre le lien vers un Grand Prix pour pouvoir avoir une image de test. Pour voir comment récupérer cet URL, voir la section (Utilisation "simple" → "Récupérer le lien vers le flux")</p>
<p>Quand l'URL a été placée au bon endroit, on peut cliquer sur le bouton "Start" et attendre. Si vous n'avez pas encore lu la partie "Utilisation "simple"", vous allez voir des invites de commandes s'ouvrir et se fermer et c'est tout à fait normal.</p>
<p>Il faut attendre d'avoir une invite de commande qui reste ouverte et qui ressemble à celle ci dessous avant de faire quoi que ce soit. Ensuite, vous pourrez simplement réduire cette fenêtre et retourner sur la page de configuration.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/SettingsPageWithCmdOpen.png"><img alt="" commande="" de="" invite="" mais="" normale""="" src="./Images/Manual/SettingsPageWithCmdOpen.png" suspecte,=""/></a>
<figcaption>"Invite de commande suspecte, mais normale"</figcaption>
</figure>
<p>Ensuite, si vous attendez un peu (le processus peut prendre jusqu'à plusieurs dizaines de secondes), vous aurez soit une erreur, soit vous vous retrouverez avec une page qui ressemble à ça :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/SettingsPageWithStartedF1TV.png"><img alt="" amorcée""="" config="" de="" page="" src="./Images/Manual/SettingsPageWithStartedF1TV.png"/></a>
<figcaption>"Page de config amorcée"</figcaption>
</figure>
<p>Et là on voit que toutes les options ont été débloquées.</p>
<p>Avant de se pencher sur les nouvelles options, on va rester sur le fonctionnement général. Le bouton "Get a newer image" permet d'avoir une image plus récente de la F1TV. C'est utile par exemple, car comme on le voit sur l'exemple, l'interface de la F1TV n'a pas encore eu le temps de disparaitre. Mais cela peut aussi être utile plus tard dans le cas où vous voudriez que certaines infos s'affichent.</p>
<p>Le bouton "Reset Emulator", lui, permet, comme son nom l'indique, de relancer le navigateur virtuel que l'on a lancé avec le bouton "Start the browser". Cela peut être utile dans le cas ou l'image ne soit pas l'image que l'on attendait ou si on veut tenter le coup avec un autre URL.</p>
<p>Maintenant, on peut passer à la création des zones et des windows</p>
<h4 id="creation-des-zones-et-des-windows">Création des Zones et des Windows</h4>
<p>Sans trop rentrer dans les détails, l'application a besoin de connaitre la localisation de certains éléments.</p>
<p>Elle a besoin de savoir :</p>
<ul>
<li>Où se trouve la zone générale des infos pilotes</li>
<li>Où se trouve chaque pilote</li>
<li>Où se trouvent les informations pour chacuns de ces pilotes</li>
</ul>
<p>Le programme de calibration est fait pour que vous n'ayez besoin de donner que les informations qu'il ne peut pas deviner.</p>
<p>Il y a deux étapes :</p>
<p>La première étape est de donner les dimensions de la zone principale d'informations. Pour ce faire, il faut dans un premier temps cliquer sur le bouton "Create the main zone" qui devrait afficher le texte suivant en dessous après avoir cliqué :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/2PointsRemaining.png"><img ajouter""="" alt="" de="" indiquant="" le="" nombre="" points="" qu'il="" reste="" src="./Images/Manual/2PointsRemaining.png" texte="" à=""/></a>
<figcaption>"Texte indiquant le nombre de points qu'il reste à ajouter"</figcaption>
</figure>
<p>Ensuite, il va falloir cliquer directement sur l'image pour indiquer le coin en haut à gauche et le point en bas à droite de la zone rectangulaire qui contient les informations.</p>
<p>Vous pouvez voir en bleu ci-dessous les coins du rectangle et en rouge l'endroit où il faut cliquer.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/WhereToDrawMainZone.png"><img alt="" de="" expliquant="" infographie="" la="" les="" ="" placer="" points="" principale""="" src="./Images/Manual/WhereToDrawMainZone.png" zone=""/></a>
<figcaption>"Infographie expliquant où placer les points de la zone principale"</figcaption>
</figure>
<p>Il faut faire attention à bien prendre tous les pilotes MAIS il faut également faire attention à ne pas prendre le texte alentours.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/ForbiddenZone.png"><img alt="" dans="" doit="" la="" ne="" pas="" qui="" src="./Images/Manual/ForbiddenZone.png" sélectionnée""="" texte="" zone="" être=""/></a>
<figcaption>"Texte qui ne doit pas être dans la zone sélectionnée"</figcaption>
</figure>
<p>Ci dessus, on peut voir du texte barré en violet. Il ne faut surtout pas que la zone vienne inclure ces bouts de texte ou toute la calibration pourrait rater.</p>
<p>Ensuite, si vous avez bien fait votre travail, au deuxième clic sur la page, vous aurez quelques secondes de flottement et ensuite, vous devriez avoir les contours que vous avez dessinés affichés en jaune avec pleins de plus petites zones à l'intérieur comme ci-dessous :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/DriverZones.png"><img alt="" automatiquement="" avec="" calculées""="" de="" les="" pilotes="" principale="" src="./Images/Manual/DriverZones.png" zone="" zones=""/></a>
<figcaption>"Zone principale avec les zones de pilotes automatiquement calculées"</figcaption>
</figure>
<p>Le programme a non seulement pris en compte la zone, mais il a aussi détecté automatiquement où se trouvaient les zones de chaque pilote. Si vous n'avez pas un résultat comme celui-là et/ou que les zones ne sont pas bien alignées sur les pilotes sur l'image, je vous conseille de réessayer de créer la zone principale.</p>
<p>La seconde étape est de montrer où sont les fenêtres d'infos au programme.</p>
<p>Vous aurez peut-être remarqué qu'en dessous de l'image principale, quand l'affichage jaune a été appliqué, une image est apparue.</p>
<p>Elle devrait ressembler à quelque chose dans ce style :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/DriverZone.png"><img alt="" d'une="" de="" image="" pilote""="" src="./Images/Manual/DriverZone.png" zone=""/></a>
<figcaption>"Image d'une zone de pilote"</figcaption>
</figure>
<p>C'est une zone de pilote de l'image que l'on voit au-dessus et c'est ici que l'on va indiquer les zones intéressantes.</p>
<p>Pour ce faire, il faut cliquer sur le bouton "Create Windows" et ce message devrait s'afficher un peu en dessous :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/9WindowsRemaining.png"><img ajouter""="" alt="" de="" indiquant="" le="" nombre="" src="./Images/Manual/9WindowsRemaining.png" texte="" windows="" à=""/></a>
<figcaption>"Texte indiquant le nombre de windows à ajouter"</figcaption>
</figure>
<p>Cela nous indique le nombre de fenêtres qu'il nous reste à sélectionner.</p>
<p>La technique est la même que pour la grande zone sauf que là, il faut le faire neuf fois. Et il faut absolument le faire dans l'ordre de gauche à droite.</p>
<p>Le but est de tout sélectionner et d'arriver à ce résultat :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/Windows.png"><img alt="" de="" découpées""="" exemple="" fenêtres="" src="./Images/Manual/Windows.png"/></a>
<figcaption>"Exemple de fenêtres découpées"</figcaption>
</figure>
<p>Dans l'ordre, de gauche à droite, on veut récupérer :</p>
<ul>
<li>La position du pilote</li>
<li>Son écart avec le leader (en l'occurrence comme c'est le leader que l'on voit, on doit sélectionner la fenêtre ou il est marqué "LEADER")</li>
<li>Son dernier temps au tour</li>
<li>La fenêtre DRS</li>
<li>L'état de ses pneus</li>
<li>Son nom</li>
<li>Son temps au secteur 1</li>
<li>Son temps au secteur 2</li>
<li>Son temps au secteur 3</li>
</ul>
<h4 id="ajout-du-nom-des-pilotes">Ajout du nom des pilotes</h4>
<p>La dernière info qui manque à notre programme est la liste des pilotes présents.</p>
<p>On peut interagir avec cette liste ici :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/DriverListControls.png"><img alt="" avec="" d'interaction="" de="" la="" liste="" menu="" pilotes""="" src="./Images/Manual/DriverListControls.png"/></a>
<figcaption>"Menu d'interaction avec la liste de pilotes"</figcaption>
</figure>
<p>Dans la boite de texte, on peut écrire le nom d'un pilote qui peut être trouvé sur l'image, on peut l'ajouter à la liste et si on a fait une erreur, on peut le retirer.</p>
<p>Et c'est à peu près tout. Il ne reste maintenant plus qu'à mettre tous les noms.</p>
<p>TIP : Il peut être intéressant d'ajouter le nom des pilotes de réserve pour éviter de venir changer son preset si un pilote n'est pas présent pour cause de maladie ou de blessure. Il faut simplement faire attention de ne pas non plus mettre trop de noms pour éviter que le programme puisse confondre.</p>
<p>Et voilà ! On a toutes les infos nécessaires.</p>
<p>La page de configuration devrait ressembler à ça :</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/SettingsReady.png"><img ajouté="" alt="" après="" avoir="" config="" de="" image="" infos""="" la="" les="" page="" src="./Images/Manual/SettingsReady.png" toutes=""/></a>
<figcaption>"Image de la page de config après avoir ajouté toutes les infos"</figcaption>
</figure>
<p>Il ne reste plus qu'à le sauvegarder.</p>
<h4 id="sauvegarder-le-nouveau-preset">Sauvegarder le nouveau Preset</h4>
<p>Pour sauvegarder le preset, on peut facilement lui donner un nom dans la zone de texte sous les trois boutons de contrôle des Presets et cliquer sur Save current Preset.</p>
<p>Et voilà, vous savez désormais comment créer vos propres presets et à quoi ils servent. Vous pouvez donc adapter le fonctionnement du projet pour qu'il soit conforme aux changements de pilotes et d'interface avec les années.</p>
<p>Vous pouvez ainsi utiliser l'application normalement en sélectionnant votre nouveau preset à chaque fois.</p>
<h3 id="load-un-preset-existant">Load un Preset existant</h3>
<p>Le loading est un peu spécial. Il faut déjà avoir lancé le navigateur virtuel pour activer les boutons. Ensuite, il suffit de sélectionner un preset et de cliquer sur "Load the Preset" et attendre un petit peu. L'affichage sera un peu bizarre, mais c'est normal, il ne faut pas s'inquiéter si la zone de pilote affichée en dessous est correcte.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/LoadedPreset.png"><img alt="" bizarre="" ce="" de="" et="" exemple="" implique""="" l'affichage="" loading="" peut="" que="" quoi="" ressembler="" src="./Images/Manual/LoadedPreset.png" un="" à="" ça=""/></a>
<figcaption>"Exemple de ce à quoi peut ressembler un loading et l'affichage bizarre que ça implique"</figcaption>
</figure>
<p>À partir de là, il est facile de faire son propre preset en changeant juste les noms des pilotes par exemple.</p>
<h2 id="comprendre-les-donnees">Comprendre les données</h2>
<p>Ici, vous allez apprendre à utiliser l'application et ses données en comprenant à quoi elles servent et comment elles sont affichées.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/Simulation.png"><img alt="" cours="" de="" depuis="" en="" fonctionnement="" image="" l'application="" minutes""="" quelques="" src="./Images/Manual/Simulation.png"/></a>
<figcaption>"Image de l'application en cours de fonctionnement depuis quelques minutes"</figcaption>
</figure>
<p>Il y a 5 types de données :</p>
<h3 id="overtakes">Overtakes</h3>
<p>Cette fenêtre est loin d'être complètement opérationnelle, mais elle permet de voir l'historique des dépassements et des changements de position. Il faut scroller pour voir les plus récents.</p>
<p>Je dirais que pour le moment, c'est la moins intéressante et elle ne fonctionne pas toujours super.</p>
<h3 id="last-five-laps">Last Five Laps</h3>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/LastFiveLAps.png"><img alt="" cinq="" de="" derniers="" des="" fenêtre="" image="" la="" src="./Images/Manual/LastFiveLAps.png" tours""=""/></a>
<figcaption>"Image de la fenêtre des cinq derniers tours"</figcaption>
</figure>
<p>En total contraste avec la fenêtre Overtakes, ici, on a peut-être la fenêtre la plus intéressante de toutes.</p>
<p>On peut voir les pilotes actuellement les plus rapides et plus lents sur le circuit. Le calcul est fait sur la moyenne des cinq derniers tours de chaque pilote. Cela permet de se faire une idée de la situation des pilotes.</p>
<p>Cela peut servir par exemple à détecter quand un pneu est plus rapide que les autres quand on voit des pilotes dans le milieu ou bas de tableau apparaître dans le plus rapide.</p>
<p>Il est par exemple intéressant de voir la différence de vitesse entre les pneus secs et pluie sur un circuit qui commence à sécher. On peut progressivement voir les pilotes en pneus secs devenir de plus en plus rapides alors que ce sont des pilotes beaucoup moins rapide en temps normal.</p>
<p>On peut cliquer sur n'importe lequel de ces pilotes pour voir ses infos apparaître dans la fenêtre Driver Infos pour voir les cinq derniers tours par exemple ou les pneus qu'il est en train de chausser.</p>
<h3 id="battles">Battles</h3>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/Battles.png"><img alt="" batailles""="" des="" fenêtre="" src="./Images/Manual/Battles.png"/></a>
<figcaption>"Fenêtre des batailles"</figcaption>
</figure>
<p>Cette fenêtre est également assez intéressante, car elle permet de voir les pilotes qui sont en train de se battre. Il est estimé qu'un pilote qui se bat est un pilote qui est à trois secondes ou moins du pilote devant lui.</p>
<p>Ne sont affichées que les batailles de quatre pilotes maximums dans l'ordre du classement.</p>
<p>Si un pilote est entre 2 et 3 secondes de son adversaire, l'écart est en blanc.
Entre 1 et 2 secondes, il est écrit en jaune.
Dans la zone du DRS (Une seconde ou moins) il est écrit en vert.</p>
<p>On peut aussi cliquer sur le nom d'un pilote pour afficher ses infos dans la fenêtre des infos pilote.</p>
<p>Cette fenêtre permet de mieux comprendre qui sont les pilotes qu'il faut garder à l'œil à la TV ou simplement qui sont les pilotes qui sont très proches et qui pourraient se mettre la pression pour les arrêts aux stands, car jamais un pilote ne reste à moins de trois secondes d'un autre si ça n'est pas pour tenter quelque chose au niveau stratégique.</p>
<h3 id="driver-infos">Driver infos</h3>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/DriverInfos.png"><img alt="" des="" fenêtre="" infos="" pilote""="" src="./Images/Manual/DriverInfos.png"/></a>
<figcaption>"Fenêtre des infos pilote"</figcaption>
</figure>
<p>Ici, on peut voir toutes les infos lives d'un pilote.</p>
<p>Rien de fou à dire sur la partie de gauche, par contre la partie de droite est un peu plus intéressante, car elle contient un historique de ses cinq derniers tours (dans la photo, il n'y en a qu'un seul, mais au fur et à mesure de la course cela se remplit).</p>
<p>On peut non seulement voir les cinq derniers temps au tour, mais on peut aussi cliquer sur chacun d'eux pour voir les secteurs associés.</p>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/LapInfos.png"><img alt="" au="" d'affichage="" d'un="" des="" exemple="" secteurs="" src="./Images/Manual/LapInfos.png" temps="" tour""=""/></a>
<figcaption>"Exemple d'affichage des secteurs d'un temps au tour"</figcaption>
</figure>
<p>;</p>
<h3 id="live-ranking">Live Ranking</h3>
<figure class="figure-image">
<a class="glightbox" href="./Images/Manual/LiveRanking.png"><img alt="" classement="" direct""="" du="" en="" fenêtre="" src="./Images/Manual/LiveRanking.png"/></a>
<figcaption>"Fenêtre du classement en direct"</figcaption>
</figure>
<p>Ceci est la fenêtre la plus simple. C'est tout bêtement le classement actuel avec les écarts avec le leader.</p>
<p>Note : On peut également cliquer sur les différents pilotes pour en afficher les infos dans la fenêtre infos pilote.</p>
<h2 id="erreurs">Erreurs</h2>
<p>Il est très probable que si vous utilisez beaucoup cette application, vous allez rencontrer des erreurs. Ici, vous pourrez apprendre ce qu'elles veulent dire et ce que vous pouvez faire pour y remédier.</p>
<p>Il n'existe pas un très grand nombre d'erreurs, mais voici les principales</p>
<ul>
<li>Erreur 100 (Souvent au premier démarrage) Cette erreur signale un problème avec la récupération de cookies. Cela peut être causé par une mauvaise installation de python ou si vous ne vous êtes pas connectés récemment à la F1TV depuis Chrome ou que vous n'avez tout simplement pas installé Chrome sur votre machine.</li>
<li>Erreur 101 (Moins récurrent qu'à une époque) Cette erreur veut dire qu'il y a déjà une instance de navigateur ouverte. Pour régler cette erreur, regarder dans votre barre des tâches les invites de commande ouvertes et fermez celui qui correspond à un ancien navigateur. (Si c'est déjà fait alors en derniers recours, vous pouvez chercher dans le gestionnaire des tâches et chercher "GeckoDriver.exe")</li>
<li>Erreur 102 Cela peut être une erreur qui arrive, car vous n'avez pas donné un URL valide pour la F1TV ou par ce que vous ne vous êtes pas connecté récemment à la F1TV depuis chrome (Si vous veniez de le faire alors, attendez un peu et réessayez). Parfois cela peut prendre un peu de temps à s'actualiser).</li>
<li>Erreur 103 L'URL est invalide</li>
<li>Erreur 104 L'URL est invalide</li>
<li>Erreur 105 Cette erreur indique que soit vous avez donné un URL qui ne correspond à aucun Grand Prix, soit que la vidéo a mis trop de temps à charger. Vous pouvez essayer de vous brancher en Ethernet ou simplement réessayer si vous êtes sûr de votre URL.</li>
<li>Erreur 106 Même chose que pour la 105</li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav aria-label="Footer" class="md-footer__inner md-grid">
<a aria-label="Previous: Cahier des charges" class="md-footer__link md-footer__link--prev" href="CahierDesCharges.html" rel="prev">
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Cahier des charges
</div>
</div>
</a>
<a aria-label="Next: Journal de bord" class="md-footer__link md-footer__link--next" href="jdb.html" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
Journal de bord
</div>
</div>
<div class="md-footer__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"></path></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
©CFPTI Tech2
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" rel="noopener" target="_blank">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}}</script>
<script src="assets/javascripts/bundle.48f2be22.min.js"></script>
<script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "width": "100%", "height": "auto", "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom"});})</script></body>
</html>