Ce projet est un projet open source, qui a pour but de mettre en évidence des indicateurs de performance clés chez les joueurs de football.
L'objectif principal à terme est de pouvoir établir des rapports comparatifs des différents joueurs référencés.
L'objectif secondaire est de proposer par une approche de clustering un panel de joueurs à profil fortement similaires en prenant en compte des paramètres de recherche (fourchette d'âge, valeur marchande, championnat, KPI etc.).
L'objectif pour les contributeurs de ce projet est de mettre à profit leurs compétences autour d'un projet orienté football, en parfaisant leurs compétences techniques, le tout en collaborant avec d'autres passionnés de la communauté sport technologies.
Les idées pour orienter le projet sont les naturellement les bienvenues.
Pour les contributions, n'hésitez pas à regarder les besoins dans les Issues de ce repositories.
Pour utiliser ce projet en local :
- Cloner ce repositories avec la commande
git clone https://github.com/giovannimin/TellMeMoreAbout.git
Pour installer les dépendances de ce projet :
pip install requirements.txt
Ce projet est destiné à être utilisé via différents modes :
- Une API mise a disposition
curl -o path/${player_name}_report.png -X GET http://localhost:8000/status/${player_name}
- Une utilisation locale via la CLI
python3 ./src/main.py $player_name
- Une application executable avec Docker
docker-compose -f TellMeMoreAbout/docker_app/docker-compose.yml up --build
- Une utilisation automatisée contrôlée par des bots X | Twitter
Voici un exemple d'utilisation de l'application :
Pour cet exemple, nous allons requêter le rapport comparatif de Bradley Barcola, en ne spécifiant que son nom comme argument pour la requête.
- API :
curl -o barcola_report.png -X GET http://localhost:8000/status/$barcola
- CLI :
python3 ./src/main.py $barcola
Le comportement de l'application est le suivant :
UserWarning: Exact match for barcola not found.
Setting `player_name` to first search result: Bradley Barcola Maybe `player_name` could be one of them ['Malcolm Barcola']
warnings.warn(msg)
Pour cette requête une alerte est levée dans le cas où il y a une confusion sur le paramètre d'entrée. Dans ce cas, la recherche sélectionne le plus probable, ici Bradley Barcola, en précisant avoir aussi trouvé d'autres correspondances ['Malcolm Barcola'].
L'objet crée est unique et identifié par nom complet, slug_id et id.
<player: Bradley Barcola, slug_id: a0d55a09, id: 140602241202592>
L'objet contient les attributs suivants :
{'name': 'Bradley Barcola',
'_url_page': 'https://fbref.com/en/players/a0d55a09/Bradley-Barcola',
'_standard_tables': None,
'_scouting_url': 'https://fbref.com/en/players/a0d55a09/scout/365_m1/Bradley-Barcola-Scouting-Report',
'_scouting_tables': None,
'slug_id': 'a0d55a09',
'infos': {'complete_name': 'Bradley Barcola',
'country': 'fr',
'country_img': 'https://cdn.ssref.net/req/202403271/flags/fr-2002.svg',
'img': 'https://fbref.com/req/202302030/images/headshots/a0d55a09_2022.jpg',
'club_img': 'https://cdn.ssref.net/req/202312151/tlogo/fb/e2d8892c.png',
'club': 'Paris Saint-Germain',
'age': 21,
'position': 'FW-MF',
'footed': None,
'weight': '63',
'height': '188'},
'img': 'https://fbref.com/req/202302030/images/headshots/a0d55a09_2022.jpg',
'country_img': 'https://cdn.ssref.net/req/202403271/flags/fr-2002.svg',
'club_img': 'https://cdn.ssref.net/req/202312151/tlogo/fb/e2d8892c.png',
'position': 'FW-MF',
'height': '188',
'weight': '63',
'age': 21,
'club': 'Paris Saint-Germain',
'country': 'fr',
'footed': None,
'complete_name': 'Bradley Barcola',
'minutes_played': '2301 '}
Enfin, l'output de la requête est renvoyé dans le dossier ./outputs ou dans le chemin spécifié lors de la requête curl sous format .png.
La figure ci-dessus est exprimée en centiles. Elle ordonne l'ensemble des joueurs d même poste évoluant dans l'un des 5 grands championnats. Les indicateurs sont normalisés par le temps.
(ie. Parmi tous les attaquants de cotés évoluant dane le Big5, Bradley Barcola remporte plus de duels aériens par 90 min de jeu, que 82% des joueurs de ce panel.)
Les données utilisées sont issus de méthodes de scrapping. Les sources utilisées sont :
Les autres sources sont les bienvenues, que ce soit à partir d'API ou de données scrappées.
L'ensemble des actions automatisées sont recensés sur cette section. Vous pourrez les trouver dans le repertoire workflows.
- test.yml, cette action exécute l'ensemble des tests unitaires pytests lors de chaque push sur la branche principale.
Les tests unitaires sont exécutés automatiquement lors de chaque push sur la branche principale et les logs ajoutés dans le volume monté sur le conteneur. Pour les exécuter manuellement :
python3 -m pytest tests/
N'hésitez pas à ajouter progressivement les tests unitaires des nouvelles fonctionnalités que vous ajoutez.
Le projet accueille avec plaisir votre expertise et votre enthousiasme ! Les petites améliorations ou corrections sont toujours appréciées. N'hésitez pas à soumettre de nouvelles idées de fonctionnalités.
Pour contribuer au projet TellMeMoreAbout. Vous pouvez :
- Examiner les demandes de Pull request
- Prendre en charge les Issues
- Nous aider à maintenir les outils de ce projet
Pour plus d'informations sur les façons dont vous pouvez contribuer à ce projet n'hésitez pas à poser des questions sur GitHub, en ouvrant une New Issue ou en laissant un message via la Discussion.
Si vous avez besoin de plus d'informations sur les contributions open-source, ce guide explique pourquoi et comment vous impliquer.