Un pipeline unifié pour l'analyse des données de tournois Magic: The Gathering, intégrant 6 repositories GitHub dans une architecture modulaire et extensible.
Le pipeline MTG Analytics est un système complet qui :
- Collecte les données depuis MTGO, MTGMelee, Topdeck et Manatraders
- Traite et catégorise les decks par archétypes
- Visualise les données avec des matrices de matchups et analyses du métagame
manalytics/
├── data-collection/ # Étape 1 : Collecte de données
│ ├── scraper/
│ │ ├── mtgo/ # mtg_decklist_scrapper (fbettega)
│ │ └── mtgmelee/ # Extension API MTGMelee
│ ├── raw-cache/ # MTG_decklistcache (fbettega)
│ └── processed-cache/ # MTGODecklistCache (Jiliac)
├── data-treatment/ # Étape 2 : Traitement
│ ├── parser/ # MTGOArchetypeParser (Badaro)
│ └── format-rules/ # MTGOFormatData (Badaro)
├── visualization/ # Étape 3 : Visualisation
│ └── r-analysis/ # R-Meta-Analysis (Jiliac)
├── config/ # Configuration
├── docs/ # Documentation
├── data/ # Données traitées
└── analyses/ # Rapports générés
- Git : Gestion des repositories
- Python 3.8+ : Scripts de collecte et orchestration
- .NET Runtime 8.0 : MTGOArchetypeParser
- R 4.0+ : Visualisations et analyses
# Cloner le projet
git clone https://github.com/your-username/manalytics.git
cd manalytics
# Installation automatique
./setup.sh# Cloner le projet
git clone https://github.com/your-username/manalytics.git
cd manalytics
# Installation automatique
.\setup.ps1# 1. Installer les dépendances système
# Ubuntu/Debian
sudo apt-get install git python3 python3-pip r-base dotnet-runtime-8.0
# macOS
brew install git python3 r dotnet
# 2. Créer l'environnement virtuel Python
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# ou
.\venv\Scripts\Activate.ps1 # Windows
# 3. Installer les dépendances Python
pip install -r requirements.txt
# 4. Installer les dépendances R
Rscript install_dependencies.R# Tester tous les composants
python test_connections.py
# Vérifier les dépendances
python -c "import requests, beautifulsoup4, numpy; print('✅ Python OK')"
dotnet --version
R --version# Vérifier que tous les repositories sont clonés
ls -la data-collection/scraper/mtgo/
ls -la data-collection/raw-cache/
ls -la data-treatment/parser/
ls -la visualization/r-analysis/{
"mtgo": {
"base_url": "https://www.mtgo.com/decklists",
"scraping_config": {
"rate_limit": 1,
"retry_attempts": 5
}
},
"mtgmelee": {
"base_url": "https://melee.gg",
"authentication": {
"login_url": "https://melee.gg/login"
}
}
}{
"login": "your-email@example.com",
"mdp": "your-password"
}your-api-key-here
# Analyser le format Standard sur les 7 derniers jours
./generate_analysis.sh standard 7
# Analyser le format Modern sur les 30 derniers jours
./generate_analysis.sh modern 30# Utiliser l'orchestrateur Python
python orchestrator.py --format standard --days 7 --output analyses/standard_analysis
# Collecter des données spécifiques
python data-collection/scraper/mtgo/main.py --format standard --days 7
# Traiter les données
python data-treatment/parser/main.py --format standard --input data/raw --output data/processed
# Générer les visualisations
Rscript visualization/r-analysis/generate_matrix.R --format standard --output analyses/- Standard : Format actuel
- Modern : Format étendu
- Legacy : Format vintage
- Vintage : Format restreint
- Pioneer : Format intermédiaire
- Pauper : Format commun
Burn Spirits Shadow Rakdos Amulet Heliod
Burn 0.50 0.45 0.55 0.60 0.40 0.65
Spirits 0.55 0.50 0.48 0.52 0.58 0.42
Shadow 0.45 0.52 0.50 0.47 0.53 0.49
Rakdos 0.40 0.48 0.53 0.50 0.45 0.55
Amulet 0.60 0.42 0.47 0.55 0.50 0.51
Heliod 0.35 0.58 0.51 0.45 0.49 0.50
Archetype Count Percentage
Burn 1 7.69%
Spirits 1 7.69%
Shadow Prowess 2 15.38%
Rakdos Midrange 1 7.69%
Amulet Titan 2 15.38%
Heliod Combo 2 15.38%
{
"Tournament": {
"date": "2025-01-15",
"name": "MTGO Standard Challenge",
"uri": "https://www.mtgo.com/decklists/...",
"formats": ["Standard"]
},
"Decks": [
{
"player": "yamakiller",
"result": "5-0",
"mainboard": [
{"count": 4, "card_name": "Lightning Bolt"}
],
"sideboard": [
{"count": 2, "card_name": "Fury"}
]
}
]
}{
"tournament_id": "mtgo-standard-20250115",
"format": "Standard",
"decks": [
{
"player_name": "yamakiller",
"archetype": "Burn",
"result": "5-0",
"mainboard": [...],
"sideboard": [...]
}
]
}manalytics/
├── orchestrator.py # Orchestrateur principal
├── analyze.py # Script d'analyse
├── test_connections.py # Tests de connectivité
├── requirements.txt # Dépendances Python
├── install_dependencies.R # Dépendances R
└── generate_analysis.sh # Script d'analyse bash
- Créer les règles d'archétypes dans
data-treatment/format-rules/Formats/NouveauFormat/ - Ajouter la configuration dans
config/sources.json - Tester la collecte avec
python test_connections.py - Valider le parsing avec
python data-treatment/parser/main.py
Le module MTGMelee doit être étendu pour :
- Authentification API
- Récupération des tournois
- Extraction des decklists
- Formatage des données
- 📖 Architecture - Architecture complète du pipeline
- 📊 Formats de Données - Spécifications des formats
- 🔧 Dépendances - Guide d'installation des dépendances
- 📋 Analyse des Repositories - Documentation des 6 repositories
- MTGO Scraper :
data-collection/scraper/mtgo/README.md - Archetype Parser :
data-treatment/parser/README.md - Format Rules :
data-treatment/format-rules/README.md - R Analysis :
visualization/r-analysis/README.md
# Tester la connectivité
python test_connections.py
# Vérifier les URLs dans config/sources.json
# Vérifier les credentials MTGMelee# Réinstaller les dépendances Python
pip install -r requirements.txt
# Réinstaller les dépendances R
Rscript install_dependencies.R
# Vérifier .NET
dotnet --version# Vérifier les règles d'archétypes
ls data-treatment/format-rules/Formats/Standard/
# Tester le parser manuellement
python data-treatment/parser/main.py --format standard --input test_data.json# Activer les logs détaillés
export MANALYTICS_DEBUG=1
python orchestrator.py --verbose
# Vérifier les logs de scraping
tail -f data-collection/scraper/mtgo/log_scraping.txt- Jiliac : Formats Standard, Modern, Legacy, Pioneer, Pauper
- IamActuallyLvL1 : Format Vintage
- fbettega : Scraping et cache des données
- Fork le repository
- Créer une branche feature (
git checkout -b feature/nouvelle-fonctionnalite) - Commiter les changements (
git commit -am 'Ajout nouvelle fonctionnalité') - Pousser vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Créer une Pull Request
- Python : PEP 8, Black, Flake8
- R : Style guide tidyverse
- Documentation : Markdown avec exemples
- Tests : Pytest pour Python, testthat pour R
Ce projet intègre plusieurs repositories sous différentes licences :
- mtg_decklist_scrapper : MIT License
- MTG_decklistcache : MIT License
- MTGOArchetypeParser : MIT License
- MTGOFormatData : MIT License
- R-Meta-Analysis : MIT License
- fbettega : Scraping et cache des données
- Badaro : Moteur de parsing d'archétypes
- Jiliac : Maintenance des formats et visualisations
- IamActuallyLvL1 : Format Vintage
- Aliquanto3 : Base du projet R-Meta-Analysis
- Issues : GitHub Issues
- Discussions : GitHub Discussions
- Documentation : Wiki
🚀 Prêt à analyser le métagame MTG ? Commencez par ./setup.sh !