Application de bureau en Python pour télécharger, stocker, analyser et représenter des données, puis générer automatiquement un rapport Word.
Cette application répond au cahier des charges du projet Python Avancé.
Elle combine une interface graphique Tkinter, une API JSON, une base SQLite, des graphiques Matplotlib, l’analyse d’un livre de Project Gutenberg, le traitement d’images et la création d’un document Word.
- Interface de bureau entièrement en français.
- Téléchargement de données JSON depuis Internet.
- Adaptation en français des intitulés affichés.
- Enregistrement et consultation des données dans SQLite.
- Agrégations calculées directement avec des requêtes SQL.
- Graphiques intégrés dans la fenêtre principale.
- Analyse du premier chapitre d’un livre.
- Traitement d’images avec Pillow.
- Export automatique d’un rapport Word.
- Gestion des erreurs réseau et mode de secours local.
- Exécution des téléchargements dans des threads.
- Thème clair ou sombre et taille de police personnalisable.
- Sept tests unitaires.
Important
Project Gutenberg peut parfois être lent ou inaccessible.
L’application essaie plusieurs adresses officielles puis utilise automatiquement une copie locale du livre et de sa couverture. La démonstration peut donc continuer même sans connexion au site.
- Démarrage rapide
- Fonctionnement
- Données JSON et SQLite
- Analyse du livre
- Rapport Word
- Installation
- Utilisation
- Tests unitaires
- Architecture du projet
- Fichiers générés
- Technologies
- Publication sur GitHub
- Auteur
Décompressez le projet puis double-cliquez sur :
run.bat
Le script installe les dépendances nécessaires et lance l’application.
python -m pip install -r requirements.txt
python app.pyflowchart LR
A[Interface Tkinter] --> B[Téléchargement JSON]
B --> C[(Base SQLite)]
C --> D[Agrégations SQL]
C --> E[Graphique Matplotlib]
A --> F[Téléchargement du livre]
F --> G[Analyse du chapitre 1]
G --> H[Distribution des paragraphes]
H --> I[Graphique]
F --> J[Traitement de l'image]
I --> K[Rapport Word]
J --> K
F -. échec réseau .-> L[Copie locale de secours]
L --> G
Les données sont téléchargées depuis l’API JSONPlaceholder puis enregistrées dans une base SQLite locale.
L’application conserve notamment :
| Champ | Description |
|---|---|
id |
Identifiant de la tâche |
user_id |
Identifiant de l’utilisateur |
name |
Intitulé adapté en français |
status |
Terminé ou en attente |
length |
Longueur de l’intitulé |
downloaded_at |
Date et heure du téléchargement |
Lors d’un nouveau téléchargement, l’utilisateur peut :
- remplacer les anciennes données ;
- ajouter uniquement les éléments absents ;
- annuler l’opération.
Le bouton Agrégation SQL affiche :
- le nombre total de tâches ;
- le nombre de tâches terminées ;
- le nombre de tâches en attente ;
- la longueur moyenne ;
- la longueur minimale ;
- la longueur maximale.
Le livre utilisé est Alice’s Adventures in Wonderland de Lewis Carroll.
L’application :
- télécharge le texte du livre ;
- extrait son titre et son auteur ;
- récupère le premier chapitre ;
- sépare le chapitre en paragraphes ;
- compte les mots de chaque paragraphe ;
- regroupe les longueurs par dizaines ;
- calcule les statistiques ;
- génère un graphique de distribution.
Les statistiques comprennent :
- le nombre de paragraphes ;
- le nombre total de mots ;
- la longueur minimale ;
- la longueur maximale ;
- la moyenne des mots par paragraphe.
L’application génère un fichier .docx comprenant :
- une page de titre ;
- le titre du livre ;
- le nom de l’auteur ;
- le nom de l’auteur du rapport ;
- une couverture téléchargée puis modifiée ;
- un logo noir et blanc pivoté ;
- le graphique de distribution ;
- les statistiques du premier chapitre ;
- la source des données.
- Python 3.10 ou supérieur ;
- une connexion Internet pour les téléchargements initiaux ;
- Microsoft Word ou LibreOffice pour ouvrir le rapport.
git clone https://github.com/VOTRE-UTILISATEUR/projet-python-avance.git
cd projet-python-avancepython -m venv .venv
.venv\Scripts\activatepython3 -m venv .venv
source .venv/bin/activatepython -m pip install --upgrade pip
python -m pip install -r requirements.txtDans l’onglet Données JSON / SQLite :
- cliquez sur Vider la base pour repartir de zéro ;
- cliquez sur Télécharger JSON ;
- vérifiez que les données apparaissent dans le tableau ;
- cliquez sur Agrégation SQL.
Dans l’onglet Graphique JSON, cliquez sur :
Afficher le graphique
Dans l’onglet Livre et rapport Word, cliquez sur :
Télécharger et analyser le livre
Après l’analyse, cliquez sur :
Exporter le rapport Word
Lancer tous les tests :
python -m unittest discover -s tests -vRésultat attendu :
Ran 7 tests
OK
Les tests vérifient notamment :
- la stabilité des intitulés français ;
- l’extraction des métadonnées du livre ;
- l’extraction du premier chapitre ;
- le calcul des mots et de la distribution ;
- la présence du livre local de secours ;
- l’insertion et le remplacement des données SQLite ;
- la gestion des doublons ;
- les agrégations SQL.
projet_python_avance/
├── app.py # Interface graphique Tkinter
├── api_service.py # Téléchargement et adaptation du JSON
├── book_service.py # Téléchargement et analyse du livre
├── config.py # Configuration et chemins
├── database.py # Accès à la base SQLite
├── models.py # Modèles de données
├── report_service.py # Création du rapport Word
├── requirements.txt # Dépendances Python
├── run.bat # Lanceur Windows
├── README.md
├── PRESENTATION_ORALE.md
├── .gitignore
│
├── assets/
│ ├── logo_bw.png
│ ├── alice_backup.txt
│ └── alice_cover_backup.jpg
│
├── data/
│ └── .gitkeep
│
├── output/
│ └── .gitkeep
│
└── tests/
├── test_api_service.py
├── test_book_service.py
└── test_database.py
Les résultats sont enregistrés dans :
output/
Exemples :
paragraph_distribution.png
alice_processed.jpg
rapport_alice.docx
La base SQLite est créée automatiquement dans :
data/application.db
| Technologie | Utilisation |
|---|---|
| Python | Langage principal |
| Tkinter | Interface graphique |
| SQLite | Stockage local |
| Requests | Téléchargements HTTP |
| Matplotlib | Graphiques |
| Pillow | Traitement d’images |
| python-docx | Génération du rapport Word |
| unittest | Tests automatisés |
| Threading | Téléchargements sans blocage de l’interface |
Créez d’abord un dépôt vide, puis exécutez :
git init
git add .
git commit -m "Ajout du projet Python Avancé"
git branch -M main
git remote add origin https://github.com/VOTRE-UTILISATEUR/projet-python-avance.git
git push -u origin mainRemplacez
VOTRE-UTILISATEURpar votre nom d’utilisateur GitHub.
Mariyanayagam Mickaël
Étudiant à Ynov Campus Paris
Développé dans le cadre du projet Python Avancé.