184 lines
No EOL
5.3 KiB
Markdown
184 lines
No EOL
5.3 KiB
Markdown
# 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. |