oedb-backend/extractors/Makefile
2025-10-04 19:26:00 +02:00

114 lines
4.2 KiB
Makefile

# Makefile pour le scraper agenda du libre
.PHONY: help install test demo monitor clean run setup-cron
# Configuration par défaut
API_URL ?= https://api.openeventdatabase.org
BATCH_SIZE ?= 1
help: ## Afficher l'aide
@echo "🔧 Scraper Agenda du Libre - Commandes disponibles"
@echo "=================================================="
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
@echo ""
@echo "💡 Variables d'environnement:"
@echo " API_URL URL de l'API OEDB (défaut: https://api.openeventdatabase.org)"
@echo " BATCH_SIZE Taille des batches (défaut: 1)"
@echo ""
@echo "📝 Exemples:"
@echo " make run BATCH_SIZE=5"
@echo " make run API_URL=http://api.example.com:8080"
install: ## Installer les dépendances
@echo "📦 Installation des dépendances..."
sudo apt update
sudo apt install -y python3-requests python3-icalendar
@echo "✅ Dépendances installées"
test: ## Exécuter les tests
@echo "🧪 Exécution des tests..."
python3 test_agendadulibre.py
python3 test_api_connection.py --api-url $(API_URL)
demo: ## Exécuter la démonstration
@echo "🎭 Exécution de la démonstration..."
python3 demo_agendadulibre.py
monitor: ## Afficher les statistiques
@echo "📊 Affichage des statistiques..."
python3 monitor_agendadulibre.py
run: ## Exécuter le scraper
@echo "🚀 Exécution du scraper..."
python3 agendadulibre.py --api-url $(API_URL) --batch-size $(BATCH_SIZE)
run-verbose: ## Exécuter le scraper en mode verbeux
@echo "🚀 Exécution du scraper en mode verbeux..."
python3 agendadulibre.py --api-url $(API_URL) --batch-size $(BATCH_SIZE) --verbose
run-force: ## Exécuter le scraper en forçant le rechargement
@echo "🚀 Exécution du scraper avec rechargement forcé..."
python3 agendadulibre.py --api-url $(API_URL) --batch-size $(BATCH_SIZE) --force-refresh
run-cache-test: ## Tester le système de cache
@echo "🔄 Test du système de cache..."
python3 agendadulibre.py --api-url $(API_URL) --batch-size 1 --verbose
@echo " Premier appel terminé, deuxième appel (depuis cache)..."
python3 agendadulibre.py --api-url $(API_URL) --batch-size 1 --verbose
setup-cron: ## Configurer la planification cron
@echo "⏰ Configuration de la planification cron..."
./setup_cron.sh
clean: ## Nettoyer les fichiers temporaires
@echo "🧹 Nettoyage des fichiers temporaires..."
rm -f agendadulibre_events.json
rm -f agendadulibre_events.ics
rm -f agendadulibre_scraper.log
rm -f cron_agendadulibre.log
@echo "✅ Nettoyage terminé"
status: ## Afficher le statut du système
@echo "📊 Statut du système:"
@echo "===================="
@echo "📁 Fichier de données:"
@if [ -f agendadulibre_events.json ]; then \
SIZE=$$(stat -c%s agendadulibre_events.json 2>/dev/null || echo "0"); \
echo " ✅ Présent ($$SIZE octets)"; \
else \
echo " ❌ Absent"; \
fi
@echo "📁 Fichier cache iCal:"
@if [ -f agendadulibre_events.ics ]; then \
SIZE=$$(stat -c%s agendadulibre_events.ics 2>/dev/null || echo "0"); \
DATE=$$(stat -c%y agendadulibre_events.ics 2>/dev/null || echo "inconnue"); \
echo " ✅ Présent ($$SIZE octets)"; \
echo " 📅 Modifié: $$DATE"; \
else \
echo " ❌ Absent"; \
fi
@echo ""
@echo "📋 Tâches cron:"
@if crontab -l 2>/dev/null | grep -q agendadulibre; then \
echo " ✅ Tâches configurées:"; \
crontab -l | grep agendadulibre | sed 's/^/ /'; \
else \
echo " ❌ Aucune tâche configurée"; \
fi
@echo ""
@echo "🔗 Connexion API:"
@python3 -c "import requests; print(' ✅' if requests.get('$(API_URL)', timeout=5).status_code == 200 else ' ❌')" 2>/dev/null || echo " ❌ API non accessible"
logs: ## Afficher les logs récents
@echo "📋 Logs récents:"
@echo "==============="
@if [ -f agendadulibre_scraper.log ]; then \
tail -20 agendadulibre_scraper.log; \
else \
echo "Aucun fichier de log trouvé"; \
fi
check-deps: ## Vérifier les dépendances
@echo "🔍 Vérification des dépendances..."
@python3 -c "import requests, icalendar; print('✅ Toutes les dépendances sont disponibles')" || echo "❌ Dépendances manquantes - exécutez 'make install'"