mirror of
https://forge.chapril.org/tykayn/osm-commerces
synced 2025-10-09 17:02:46 +02:00
up wiki compare
This commit is contained in:
parent
ce508974c9
commit
2f49ef6479
23 changed files with 567403 additions and 5132 deletions
|
@ -1,14 +1,31 @@
|
|||
# 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.
|
||||
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 :
|
||||
Le projet comprend huit 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.
|
||||
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.
|
||||
4. **detect_suspicious_deletions.py** : Analyse les changements récents du wiki OSM pour détecter les suppressions
|
||||
suspectes (plus de 20 caractères) et les enregistre dans un fichier JSON pour affichage sur le site web.
|
||||
5. **fetch_proposals.py** : Récupère les propositions de tags OSM en cours de vote et les propositions récemment modifiées,
|
||||
et les enregistre dans un fichier JSON pour affichage sur le site web. Les données sont mises en cache pendant une heure
|
||||
pour éviter des requêtes trop fréquentes au serveur wiki.
|
||||
6. **find_untranslated_french_pages.py** : Identifie les pages wiki françaises qui n'ont pas de traduction en anglais
|
||||
et les enregistre dans un fichier JSON pour affichage sur le site web. Les données sont mises en cache pendant une heure.
|
||||
7. **find_pages_unavailable_in_french.py** : Scrape la catégorie des pages non disponibles en français, gère la pagination
|
||||
pour récupérer toutes les pages, les groupe par préfixe de langue et priorise les pages commençant par "En:". Les données
|
||||
sont mises en cache pendant une heure.
|
||||
8. **fetch_osm_fr_groups.py** : Récupère les informations sur les groupes de travail et les groupes locaux d'OSM-FR
|
||||
depuis la section #Pages_des_groupes_locaux et les enregistre dans un fichier JSON pour affichage sur le site web.
|
||||
Les données sont mises en cache pendant une heure.
|
||||
|
||||
## Installation
|
||||
|
||||
|
@ -60,6 +77,7 @@ Pour analyser les pages wiki et générer les fichiers de données :
|
|||
```
|
||||
|
||||
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
|
||||
|
@ -93,17 +111,124 @@ Pour simuler la publication sans réellement poster sur Mastodon (mode test) :
|
|||
./suggest_translation.py --dry-run
|
||||
```
|
||||
|
||||
### Détecter les suppressions suspectes
|
||||
|
||||
Pour analyser les changements récents du wiki OSM et détecter les suppressions suspectes :
|
||||
|
||||
```bash
|
||||
./detect_suspicious_deletions.py
|
||||
```
|
||||
|
||||
Pour afficher les suppressions détectées sans les enregistrer dans un fichier (mode test) :
|
||||
|
||||
```bash
|
||||
./detect_suspicious_deletions.py --dry-run
|
||||
```
|
||||
|
||||
### Récupérer les propositions de tags
|
||||
|
||||
Pour récupérer les propositions de tags OSM en cours de vote et récemment modifiées :
|
||||
|
||||
```bash
|
||||
./fetch_proposals.py
|
||||
```
|
||||
|
||||
Pour forcer la mise à jour des données même si le cache est encore frais :
|
||||
|
||||
```bash
|
||||
./fetch_proposals.py --force
|
||||
```
|
||||
|
||||
Pour afficher les propositions sans les enregistrer dans un fichier (mode test) :
|
||||
|
||||
```bash
|
||||
./fetch_proposals.py --dry-run
|
||||
```
|
||||
|
||||
### Trouver les pages françaises sans traduction anglaise
|
||||
|
||||
Pour identifier les pages wiki françaises qui n'ont pas de traduction en anglais :
|
||||
|
||||
```bash
|
||||
./find_untranslated_french_pages.py
|
||||
```
|
||||
|
||||
Pour forcer la mise à jour des données même si le cache est encore frais :
|
||||
|
||||
```bash
|
||||
./find_untranslated_french_pages.py --force
|
||||
```
|
||||
|
||||
Pour afficher les pages sans les enregistrer dans un fichier (mode test) :
|
||||
|
||||
```bash
|
||||
./find_untranslated_french_pages.py --dry-run
|
||||
```
|
||||
|
||||
### Trouver les pages non disponibles en français
|
||||
|
||||
Pour identifier les pages wiki qui n'ont pas de traduction française, groupées par langue d'origine :
|
||||
|
||||
```bash
|
||||
./find_pages_unavailable_in_french.py
|
||||
```
|
||||
|
||||
Pour forcer la mise à jour des données même si le cache est encore frais :
|
||||
|
||||
```bash
|
||||
./find_pages_unavailable_in_french.py --force
|
||||
```
|
||||
|
||||
Pour afficher les pages sans les enregistrer dans un fichier (mode test) :
|
||||
|
||||
```bash
|
||||
./find_pages_unavailable_in_french.py --dry-run
|
||||
```
|
||||
|
||||
### Récupérer les groupes OSM-FR
|
||||
|
||||
Pour récupérer les informations sur les groupes de travail et les groupes locaux d'OSM-FR :
|
||||
|
||||
```bash
|
||||
./fetch_osm_fr_groups.py
|
||||
```
|
||||
|
||||
Pour forcer la mise à jour des données même si le cache est encore frais :
|
||||
|
||||
```bash
|
||||
./fetch_osm_fr_groups.py --force
|
||||
```
|
||||
|
||||
Pour afficher les groupes sans les enregistrer dans un fichier (mode test) :
|
||||
|
||||
```bash
|
||||
./fetch_osm_fr_groups.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.
|
||||
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, ainsi que pour maintenir à jour les données affichées sur le site web.
|
||||
|
||||
Exemple de configuration cron pour publier une suggestion de mise à jour chaque lundi et une suggestion de traduction chaque jeudi :
|
||||
Exemple de configuration cron pour publier des suggestions et mettre à jour les données :
|
||||
|
||||
```
|
||||
# Publier des suggestions sur Mastodon
|
||||
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
|
||||
|
||||
# Mettre à jour les données pour le site web (toutes les 6 heures)
|
||||
0 */6 * * * cd /chemin/vers/wiki_compare && ./detect_suspicious_deletions.py
|
||||
0 */6 * * * cd /chemin/vers/wiki_compare && ./fetch_proposals.py
|
||||
0 */6 * * * cd /chemin/vers/wiki_compare && ./find_untranslated_french_pages.py
|
||||
0 */6 * * * cd /chemin/vers/wiki_compare && ./find_pages_unavailable_in_french.py
|
||||
0 */6 * * * cd /chemin/vers/wiki_compare && ./fetch_osm_fr_groups.py
|
||||
```
|
||||
|
||||
Note : Les scripts de mise à jour des données pour le site web intègrent déjà une vérification de fraîcheur du cache (1 heure),
|
||||
mais la configuration cron ci-dessus permet de s'assurer que les données sont régulièrement mises à jour même en cas de problème
|
||||
temporaire avec les scripts.
|
||||
|
||||
## Structure des données
|
||||
|
||||
### top_keys.json
|
||||
|
@ -115,8 +240,7 @@ Contient les 10 clés OSM les plus utilisées avec leur nombre d'utilisations :
|
|||
{
|
||||
"key": "building",
|
||||
"count": 459876543
|
||||
},
|
||||
...
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
|
@ -140,8 +264,8 @@ Contient des informations détaillées sur les pages qui ont besoin de mises à
|
|||
{
|
||||
"key": "building",
|
||||
"reason": "French page outdated by 491 days",
|
||||
"en_page": { ... },
|
||||
"fr_page": { ... },
|
||||
"en_page": {},
|
||||
"fr_page": {},
|
||||
"date_diff": 491,
|
||||
"word_diff": 700,
|
||||
"section_diff": 2,
|
||||
|
@ -150,30 +274,209 @@ Contient des informations détaillées sur les pages qui ont besoin de mises à
|
|||
{
|
||||
"key": "amenity",
|
||||
"reason": "French page missing",
|
||||
"en_page": { ... },
|
||||
"en_page": {},
|
||||
"fr_page": null,
|
||||
"date_diff": 0,
|
||||
"word_diff": 4200,
|
||||
"section_diff": 15,
|
||||
"priority": 100
|
||||
},
|
||||
...
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### suspicious_deletions.json
|
||||
|
||||
Contient des informations sur les suppressions suspectes détectées dans les changements récents du wiki OSM :
|
||||
|
||||
```json
|
||||
{
|
||||
"last_updated": "2025-08-22T15:03:03.616532",
|
||||
"deletions": [
|
||||
{
|
||||
"page_title": "FR:Key:roof:shape",
|
||||
"page_url": "https://wiki.openstreetmap.org/wiki/FR:Key:roof:shape",
|
||||
"deletion_size": -286,
|
||||
"timestamp": "22 août 2025 à 14:15",
|
||||
"user": "RubenKelevra",
|
||||
"comment": "Suppression de contenu obsolète"
|
||||
},
|
||||
{
|
||||
"page_title": "FR:Key:sport",
|
||||
"page_url": "https://wiki.openstreetmap.org/wiki/FR:Key:sport",
|
||||
"deletion_size": -240,
|
||||
"timestamp": "21 août 2025 à 09:30",
|
||||
"user": "Computae",
|
||||
"comment": "Mise à jour de la documentation"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### proposals.json
|
||||
|
||||
Contient des informations sur les propositions de tags OSM en cours de vote et récemment modifiées :
|
||||
|
||||
```json
|
||||
{
|
||||
"last_updated": "2025-08-22T15:09:49.905332",
|
||||
"voting_proposals": [
|
||||
{
|
||||
"title": "Proposal:Man made=ceremonial gate",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/Proposal:Man_made%3Dceremonial_gate",
|
||||
"status": "Voting",
|
||||
"type": "voting"
|
||||
},
|
||||
{
|
||||
"title": "Proposal:Developer",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/Proposal:Developer",
|
||||
"status": "Voting",
|
||||
"type": "voting"
|
||||
}
|
||||
],
|
||||
"recent_proposals": [
|
||||
{
|
||||
"title": "Proposal:Landuse=brownfield",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/Proposal:Landuse=brownfield",
|
||||
"last_modified": "22 août 2025 à 10:45",
|
||||
"modified_by": "MapperUser",
|
||||
"type": "recent"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### untranslated_french_pages.json
|
||||
|
||||
Contient des informations sur les pages wiki françaises qui n'ont pas de traduction en anglais :
|
||||
|
||||
```json
|
||||
{
|
||||
"last_updated": "2025-08-22T16:30:15.123456",
|
||||
"untranslated_pages": [
|
||||
{
|
||||
"title": "FR:Key:building:colour",
|
||||
"key": "Key:building:colour",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/FR:Key:building:colour",
|
||||
"has_translation": false
|
||||
},
|
||||
{
|
||||
"title": "FR:Tag:amenity=bicycle_repair_station",
|
||||
"key": "Tag:amenity=bicycle_repair_station",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bicycle_repair_station",
|
||||
"has_translation": false
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### pages_unavailable_in_french.json
|
||||
|
||||
Contient des informations sur les pages wiki qui n'ont pas de traduction française, groupées par langue d'origine :
|
||||
|
||||
```json
|
||||
{
|
||||
"last_updated": "2025-08-22T17:15:45.123456",
|
||||
"grouped_pages": {
|
||||
"En": [
|
||||
{
|
||||
"title": "En:Key:building:colour",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/En:Key:building:colour",
|
||||
"language_prefix": "En",
|
||||
"is_english": true,
|
||||
"priority": 1
|
||||
}
|
||||
],
|
||||
"De": [
|
||||
{
|
||||
"title": "De:Tag:highway=residential",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/De:Tag:highway=residential",
|
||||
"language_prefix": "De",
|
||||
"is_english": false,
|
||||
"priority": 0
|
||||
}
|
||||
],
|
||||
"Other": [
|
||||
{
|
||||
"title": "Tag:amenity=bicycle_repair_station",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_repair_station",
|
||||
"language_prefix": "Other",
|
||||
"is_english": false,
|
||||
"priority": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"all_pages": [
|
||||
{
|
||||
"title": "En:Key:building:colour",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/En:Key:building:colour",
|
||||
"language_prefix": "En",
|
||||
"is_english": true,
|
||||
"priority": 1
|
||||
},
|
||||
{
|
||||
"title": "De:Tag:highway=residential",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/De:Tag:highway=residential",
|
||||
"language_prefix": "De",
|
||||
"is_english": false,
|
||||
"priority": 0
|
||||
},
|
||||
{
|
||||
"title": "Tag:amenity=bicycle_repair_station",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_repair_station",
|
||||
"language_prefix": "Other",
|
||||
"is_english": false,
|
||||
"priority": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### osm_fr_groups.json
|
||||
|
||||
Contient des informations sur les groupes de travail et les groupes locaux d'OSM-FR :
|
||||
|
||||
```json
|
||||
{
|
||||
"last_updated": "2025-08-22T16:45:30.789012",
|
||||
"working_groups": [
|
||||
{
|
||||
"name": "Groupe Bâtiments",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/France/OSM-FR/Groupes_de_travail/B%C3%A2timents",
|
||||
"description": "Groupe de travail sur la cartographie des bâtiments",
|
||||
"category": "Cartographie",
|
||||
"type": "working_group"
|
||||
}
|
||||
],
|
||||
"local_groups": [
|
||||
{
|
||||
"name": "Groupe local de Paris",
|
||||
"url": "https://wiki.openstreetmap.org/wiki/France/Paris",
|
||||
"description": "Groupe local des contributeurs parisiens",
|
||||
"type": "local_group"
|
||||
}
|
||||
],
|
||||
"umap_url": "https://umap.openstreetmap.fr/fr/map/groupes-locaux-openstreetmap_152488"
|
||||
}
|
||||
```
|
||||
|
||||
## 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.
|
||||
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.
|
||||
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`.
|
||||
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.
|
||||
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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue