diff --git a/extractors/osm_cal.py b/extractors/osm_cal.py index 5263bc0..cc3b2be 100755 --- a/extractors/osm_cal.py +++ b/extractors/osm_cal.py @@ -639,10 +639,15 @@ def submit_event(event): if event_id: logger.success(f"Event created with ID: {event_id}") + logger.info(f" https://api.openeventdatabase.org/event/{event_id}") return True else: logger.warning(f"Event created but no ID returned in response") return True + elif response.status_code == 409: + # 409 Conflict - L'événement existe déjà, considéré comme un succès + logger.success(f"Event already exists in database: {properties.get('label')} (HTTP 409)") + return True else: logger.warning(f"Failed to create event: {properties.get('label')}. Status code: {response.status_code}") logger.warning(f"Response: {response.text}") @@ -739,6 +744,12 @@ def main(max_events=1, offset=0): success_count = 0 for event_link in events_to_process: try: + # Vérifier si l'événement est déjà en succès (sécurité supplémentaire) + if event_cache.get(event_link, {}).get('status') == 'success': + logger.info(f"Événement déjà en succès, passage au suivant : {event_link}") + success_count += 1 # Compter comme succès puisqu'il est déjà traité + continue + event_cache[event_link]['attempts'] += 1 event_cache[event_link]['last_attempt'] = datetime.now().isoformat() @@ -775,7 +786,36 @@ def main(max_events=1, offset=0): # Sauvegarder le cache mis à jour save_event_cache(event_cache) + # Calculer les statistiques finales du cache + cache_stats = { + 'success': 0, + 'pending': 0, + 'failed': 0, + 'error': 0, + 'total': len(event_cache) + } + + for link, data in event_cache.items(): + status = data.get('status', 'pending') + if status in cache_stats: + cache_stats[status] += 1 + + # Événements en attente d'insertion (tous sauf success) + events_awaiting_insertion = cache_stats['pending'] + cache_stats['failed'] + cache_stats['error'] + logger.success(f"Traitement terminé : {success_count} événements insérés avec succès sur {len(events_to_process)} traités") + logger.info("=== STATISTIQUES GLOBALES DU CACHE ===") + logger.info(f"Total d'événements dans le cache : {cache_stats['total']}") + logger.info(f"Événements traités avec succès : {cache_stats['success']}") + logger.info(f"Événements en attente d'insertion : {events_awaiting_insertion}") + logger.info(f" - Statut 'pending' : {cache_stats['pending']}") + logger.info(f" - Statut 'failed' : {cache_stats['failed']}") + logger.info(f" - Statut 'error' : {cache_stats['error']}") + + if events_awaiting_insertion > 0: + logger.info(f"🔄 Il reste {events_awaiting_insertion} événements à traiter lors de la prochaine exécution") + else: + logger.success("✅ Tous les événements découverts ont été traités avec succès") def create_event_from_link(event_link): """ diff --git a/extractors/osmcal_debug.html b/extractors/osmcal_debug.html index 3e94caa..73297ce 100644 --- a/extractors/osmcal_debug.html +++ b/extractors/osmcal_debug.html @@ -689,10 +689,10 @@ -
Mapathon Bliesgau, Saarpfalz-Kreis
-Homburg, Saarland, Germany
+OpenStreetMap Midwest Meetup
+Ohio, United States
OpenStreetMap Midwest Meetup
-Ohio, United States
+Mapathon Bliesgau, Saarpfalz-Kreis
+Homburg, Saarland, Germany
Open Transport Community Conference
-Vienna, Austria
+Open Transport Community Conference (ÖBB)
+Open Transport Community Conference (ÖBB)
- +Open Transport Community Conference
+Vienna, Austria
OSM-Stammtisch Hannover
Hanover, Lower Saxony, Germany
@@ -1102,22 +1102,6 @@ - - - -OSM-Stammtisch Hannover
-Hanover, Lower Saxony, Germany
-Missing Maps London: (Online) Mapathon [eng]
- +East Midlands pub meet-up
+Derby, England, United Kingdom
East Midlands pub meet-up
-Derby, England, United Kingdom
+Missing Maps London: (Online) Mapathon [eng]
+OpenStreetMap Midwest Meetup
-Ohio, United States
+Münchner OSM-Treffen
+Munich, Bavaria, Germany
Münchner OSM-Treffen
-Munich, Bavaria, Germany
+OpenStreetMap Midwest Meetup
+Ohio, United States