scrapping agendadulibre
This commit is contained in:
parent
6deed13d0b
commit
74738772b4
18 changed files with 63557 additions and 11 deletions
130
extractors/test_api_connection.py
Executable file
130
extractors/test_api_connection.py
Executable file
|
@ -0,0 +1,130 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script de test de connexion à l'API OEDB pour le scraper agenda du libre
|
||||
"""
|
||||
|
||||
import requests
|
||||
import sys
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
# Configuration par défaut
|
||||
api_oedb = "https://api.openeventdatabase.org"
|
||||
|
||||
def test_api_connection(api_url: str = api_oedb):
|
||||
"""Test la connexion à l'API OEDB"""
|
||||
print(f"🔍 Test de connexion à l'API OEDB: {api_url}")
|
||||
print("=" * 50)
|
||||
|
||||
# Test 1: Endpoint de base
|
||||
print("1️⃣ Test de l'endpoint de base...")
|
||||
try:
|
||||
response = requests.get(f"{api_url}/", timeout=10)
|
||||
if response.status_code == 200:
|
||||
print("✅ Endpoint de base accessible")
|
||||
else:
|
||||
print(f"⚠️ Endpoint de base répond avec le code: {response.status_code}")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ Erreur de connexion à l'endpoint de base: {e}")
|
||||
return False
|
||||
|
||||
# Test 2: Endpoint des événements
|
||||
print("\n2️⃣ Test de l'endpoint des événements...")
|
||||
try:
|
||||
response = requests.get(f"{api_url}/events", timeout=10)
|
||||
if response.status_code == 200:
|
||||
print("✅ Endpoint des événements accessible")
|
||||
try:
|
||||
data = response.json()
|
||||
if 'features' in data:
|
||||
print(f" 📊 {len(data['features'])} événements trouvés dans l'API")
|
||||
else:
|
||||
print(" ⚠️ Format de réponse inattendu")
|
||||
except json.JSONDecodeError:
|
||||
print(" ⚠️ Réponse non-JSON reçue")
|
||||
else:
|
||||
print(f"❌ Endpoint des événements répond avec le code: {response.status_code}")
|
||||
return False
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ Erreur de connexion à l'endpoint des événements: {e}")
|
||||
return False
|
||||
|
||||
# Test 3: Test d'envoi d'un événement de test
|
||||
print("\n3️⃣ Test d'envoi d'un événement de test...")
|
||||
test_event = {
|
||||
"type": "Feature",
|
||||
"properties": {
|
||||
"label": f"Test API Connection - {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
|
||||
"description": "Événement de test pour vérifier la connexion API",
|
||||
"type": "scheduled",
|
||||
"what": "community",
|
||||
"where": "Test Location",
|
||||
"start": datetime.now().isoformat(),
|
||||
"stop": (datetime.now().timestamp() + 3600).isoformat(),
|
||||
"source:name": "Test API Connection",
|
||||
"last_modified_by": "test_script"
|
||||
},
|
||||
"geometry": {
|
||||
"type": "Point",
|
||||
"coordinates": [0, 0]
|
||||
}
|
||||
}
|
||||
|
||||
try:
|
||||
response = requests.post(
|
||||
f"{api_url}/event",
|
||||
json=test_event,
|
||||
headers={"Content-Type": "application/json"},
|
||||
timeout=10
|
||||
)
|
||||
|
||||
if response.status_code == 201:
|
||||
print("✅ Événement de test créé avec succès")
|
||||
try:
|
||||
created_event = response.json()
|
||||
event_id = created_event.get('id', 'inconnu')
|
||||
print(f" 📝 ID de l'événement créé: {event_id}")
|
||||
except json.JSONDecodeError:
|
||||
print(" ⚠️ Réponse de création non-JSON")
|
||||
elif response.status_code == 409:
|
||||
print("⚠️ Événement de test déjà existant (conflit)")
|
||||
else:
|
||||
print(f"❌ Erreur lors de la création de l'événement de test: {response.status_code}")
|
||||
print(f" Réponse: {response.text}")
|
||||
return False
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ Erreur lors de l'envoi de l'événement de test: {e}")
|
||||
return False
|
||||
|
||||
print("\n✅ Tous les tests de connexion sont passés!")
|
||||
return True
|
||||
|
||||
def main():
|
||||
"""Fonction principale"""
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(description="Test de connexion à l'API OEDB")
|
||||
parser.add_argument("--api-url", default=api_oedb,
|
||||
help="URL de l'API OEDB à tester")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
success = test_api_connection(args.api_url)
|
||||
|
||||
if success:
|
||||
print("\n🎉 L'API OEDB est prête pour le scraper agenda du libre!")
|
||||
print("\n💡 Commandes utiles:")
|
||||
print(" - Test complet: python3 test_agendadulibre.py")
|
||||
print(" - Démonstration: python3 demo_agendadulibre.py")
|
||||
print(" - Scraping réel: python3 agendadulibre.py --api-url " + args.api_url)
|
||||
else:
|
||||
print("\n❌ L'API OEDB n'est pas accessible ou ne fonctionne pas correctement.")
|
||||
print("\n🔧 Vérifications à effectuer:")
|
||||
print(" - L'API OEDB est-elle démarrée?")
|
||||
print(" - L'URL est-elle correcte?")
|
||||
print(" - Y a-t-il des erreurs dans les logs de l'API?")
|
||||
|
||||
sys.exit(0 if success else 1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue