add wiki fraicheur comparée anglais français

This commit is contained in:
Tykayn 2025-08-21 16:07:49 +02:00 committed by tykayn
parent 0aaddb44c5
commit 83d1972589
12 changed files with 1332 additions and 0 deletions

184
wiki_compare/README.md Normal file
View file

@ -0,0 +1,184 @@
# OSM Wiki Compare
Ce projet contient des scripts pour analyser les pages wiki d'OpenStreetMap, identifier celles qui ont besoin de mises à jour ou de traductions, et publier des suggestions sur Mastodon pour encourager la communauté à contribuer.
## Vue d'ensemble
Le projet comprend trois scripts principaux :
1. **wiki_compare.py** : Récupère les 10 clés OSM les plus utilisées, compare leurs pages wiki en anglais et en français, et identifie celles qui ont besoin de mises à jour.
2. **post_outdated_page.py** : Sélectionne aléatoirement une page wiki française qui n'est pas à jour et publie un message sur Mastodon pour suggérer sa mise à jour.
3. **suggest_translation.py** : Identifie les pages wiki anglaises qui n'ont pas de traduction française et publie une suggestion de traduction sur Mastodon.
## Installation
### Prérequis
- Python 3.6 ou supérieur
- Pip (gestionnaire de paquets Python)
### Dépendances
Installez les dépendances requises :
```bash
pip install requests beautifulsoup4
```
## Configuration
### Mastodon API
Pour publier sur Mastodon, vous devez :
1. Créer un compte sur une instance Mastodon
2. Créer une application dans les paramètres de votre compte pour obtenir un jeton d'accès
3. Configurer les scripts avec votre instance et votre jeton d'accès
Modifiez les constantes suivantes dans les scripts `post_outdated_page.py` et `suggest_translation.py` :
```python
MASTODON_API_URL = "https://mastodon.instance/api/v1/statuses" # Remplacez par votre instance
```
### Variables d'environnement
Définissez la variable d'environnement suivante pour l'authentification Mastodon :
```bash
export MASTODON_ACCESS_TOKEN="votre_jeton_d_acces"
```
## Utilisation
### Analyser les pages wiki
Pour analyser les pages wiki et générer les fichiers de données :
```bash
./wiki_compare.py
```
Cela produira :
- `top_keys.json` : Les 10 clés OSM les plus utilisées
- `wiki_pages.csv` : Informations sur chaque page wiki
- `outdated_pages.json` : Pages qui ont besoin de mises à jour
- Une sortie console listant les 10 pages wiki qui ont besoin de mises à jour
### Publier une suggestion de mise à jour
Pour sélectionner aléatoirement une page française qui n'est pas à jour et publier une suggestion sur Mastodon :
```bash
./post_outdated_page.py
```
Pour simuler la publication sans réellement poster sur Mastodon (mode test) :
```bash
./post_outdated_page.py --dry-run
```
### Suggérer une traduction
Pour identifier une page anglaise sans traduction française et publier une suggestion sur Mastodon :
```bash
./suggest_translation.py
```
Pour simuler la publication sans réellement poster sur Mastodon (mode test) :
```bash
./suggest_translation.py --dry-run
```
## Automatisation
Vous pouvez automatiser l'exécution de ces scripts à l'aide de cron pour publier régulièrement des suggestions de mises à jour et de traductions.
Exemple de configuration cron pour publier une suggestion de mise à jour chaque lundi et une suggestion de traduction chaque jeudi :
```
0 10 * * 1 cd /chemin/vers/wiki_compare && ./wiki_compare.py && ./post_outdated_page.py
0 10 * * 4 cd /chemin/vers/wiki_compare && ./wiki_compare.py && ./suggest_translation.py
```
## Structure des données
### top_keys.json
Contient les 10 clés OSM les plus utilisées avec leur nombre d'utilisations :
```json
[
{
"key": "building",
"count": 459876543
},
...
]
```
### wiki_pages.csv
Contient des informations sur chaque page wiki :
```
key,language,url,last_modified,sections,word_count
building,en,https://wiki.openstreetmap.org/wiki/Key:building,2023-05-15,12,3500
building,fr,https://wiki.openstreetmap.org/wiki/FR:Key:building,2022-01-10,10,2800
...
```
### outdated_pages.json
Contient des informations détaillées sur les pages qui ont besoin de mises à jour :
```json
[
{
"key": "building",
"reason": "French page outdated by 491 days",
"en_page": { ... },
"fr_page": { ... },
"date_diff": 491,
"word_diff": 700,
"section_diff": 2,
"priority": 250.5
},
{
"key": "amenity",
"reason": "French page missing",
"en_page": { ... },
"fr_page": null,
"date_diff": 0,
"word_diff": 4200,
"section_diff": 15,
"priority": 100
},
...
]
```
## Dépannage
### Problèmes courants
1. **Erreur d'authentification Mastodon** : Vérifiez que la variable d'environnement `MASTODON_ACCESS_TOKEN` est correctement définie et que le jeton est valide.
2. **Erreur de chargement des fichiers JSON** : Assurez-vous d'exécuter `wiki_compare.py` avant les autres scripts pour générer les fichiers de données nécessaires.
3. **Aucune page à mettre à jour ou à traduire** : Il est possible que toutes les pages soient à jour ou traduites. Essayez d'augmenter le nombre de clés analysées en modifiant la valeur `limit` dans la fonction `fetch_top_keys` de `wiki_compare.py`.
### Journalisation
Tous les scripts utilisent le module `logging` pour enregistrer les informations d'exécution. Par défaut, les logs sont affichés dans la console. Pour les rediriger vers un fichier, modifiez la configuration de logging dans chaque script.
## Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request pour améliorer ces scripts.
## Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.