215 lines
10 KiB
Bash
215 lines
10 KiB
Bash
#!/bin/bash
|
|||
|
|
#
|
||
|
|
# Eurojackpot Cron Setup Script
|
||
|
|
#
|
||
|
|
# Richtet automatische Cronjobs ein für:
|
||
|
|
# - Montag & Donnerstag 09:00: Tipps generieren
|
||
|
|
# - Dienstag & Freitag 21:00: Daten aktualisieren & lernen
|
||
|
|
#
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||
|
|
PROJECT_PATH="$SCRIPT_DIR"
|
||
|
|
PYTHON_VENV="$PROJECT_PATH/venv/bin/python"
|
||
|
|
LOGS_DIR="$PROJECT_PATH/logs"
|
||
|
|
|
||
|
|
echo "╔════════════════════════════════════════════════════════════════╗"
|
||
|
|
echo "║ EUROJACKPOT AUTOMATION - CRON SETUP ║"
|
||
|
|
echo "╚════════════════════════════════════════════════════════════════╝"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# 1. Prüfe ob venv existiert
|
||
|
|
echo "🔍 Prüfe virtuelle Umgebung..."
|
||
|
|
if [ ! -f "$PYTHON_VENV" ]; then
|
||
|
|
echo " ❌ Virtuelle Umgebung nicht gefunden!"
|
||
|
|
echo " 📁 Erwartet: $PYTHON_VENV"
|
||
|
|
echo ""
|
||
|
|
echo " 💡 Bitte zuerst venv erstellen:"
|
||
|
|
echo " python3 -m venv venv"
|
||
|
|
echo " source venv/bin/activate"
|
||
|
|
echo " pip install requests beautifulsoup4 pandas numpy scikit-learn"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
echo " ✅ venv gefunden"
|
||
|
|
|
||
|
|
# 2. Erstelle Log-Verzeichnis
|
||
|
|
echo ""
|
||
|
|
echo "📁 Erstelle Log-Verzeichnis..."
|
||
|
|
mkdir -p "$LOGS_DIR"
|
||
|
|
echo " ✅ $LOGS_DIR"
|
||
|
|
|
||
|
|
# 3. Teste Scripts
|
||
|
|
echo ""
|
||
|
|
echo "🧪 Teste Scripts..."
|
||
|
|
|
||
|
|
echo " 📝 Teste weekly_tip_generator.py..."
|
||
|
|
cd "$PROJECT_PATH"
|
||
|
|
source venv/bin/activate
|
||
|
|
if python scripts/automation/weekly_tip_generator.py --history > /dev/null 2>&1; then
|
||
|
|
echo " ✅ Script funktioniert"
|
||
|
|
else
|
||
|
|
echo " ⚠️ Script hat Fehler (möglicherweise OK wenn Historie leer)"
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo " 📝 Teste auto_update_and_learn.py..."
|
||
|
|
if python -c "import sys; sys.path.insert(0, '$PROJECT_PATH'); from scripts.automation.auto_update_and_learn import AutoUpdateAndLearn" > /dev/null 2>&1; then
|
||
|
|
echo " ✅ Script kann importiert werden"
|
||
|
|
else
|
||
|
|
echo " ❌ Script hat Import-Fehler"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# 4. Zeige Cron-Konfiguration
|
||
|
|
echo ""
|
||
|
|
echo "╔════════════════════════════════════════════════════════════════╗"
|
||
|
|
echo "║ CRON-KONFIGURATION ║"
|
||
|
|
echo "╚════════════════════════════════════════════════════════════════╝"
|
||
|
|
echo ""
|
||
|
|
echo "Die folgenden Cronjobs werden hinzugefügt:"
|
||
|
|
echo ""
|
||
|
|
echo "┌────────────────────────────────────────────────────────────────┐"
|
||
|
|
echo "│ MONTAG & DONNERSTAG 09:00 - Tipps generieren │"
|
||
|
|
echo "└────────────────────────────────────────────────────────────────┘"
|
||
|
|
echo "0 9 * * 1,4 cd \"$PROJECT_PATH\" && source venv/bin/activate && python scripts/automation/weekly_tip_generator.py >> \"$LOGS_DIR/tips_generation.log\" 2>&1"
|
||
|
|
echo ""
|
||
|
|
echo "┌────────────────────────────────────────────────────────────────┐"
|
||
|
|
echo "│ DIENSTAG & FREITAG 21:00 - Update & Learning │"
|
||
|
|
echo "└────────────────────────────────────────────────────────────────┘"
|
||
|
|
echo "0 21 * * 2,5 cd \"$PROJECT_PATH\" && source venv/bin/activate && python scripts/automation/auto_update_and_learn.py >> \"$LOGS_DIR/auto_update.log\" 2>&1"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# 5. Frage Benutzer
|
||
|
|
echo ""
|
||
|
|
echo "╔════════════════════════════════════════════════════════════════╗"
|
||
|
|
echo "║ INSTALLATION ║"
|
||
|
|
echo "╚════════════════════════════════════════════════════════════════╝"
|
||
|
|
echo ""
|
||
|
|
echo "Möchtest du diese Cronjobs jetzt installieren?"
|
||
|
|
echo ""
|
||
|
|
echo " [1] Ja, Cronjobs automatisch hinzufügen"
|
||
|
|
echo " [2] Nein, nur Anleitung für manuelle Installation zeigen"
|
||
|
|
echo " [3] Abbrechen"
|
||
|
|
echo ""
|
||
|
|
read -p "Wahl (1/2/3): " choice
|
||
|
|
|
||
|
|
case $choice in
|
||
|
|
1)
|
||
|
|
echo ""
|
||
|
|
echo "📝 Installiere Cronjobs..."
|
||
|
|
|
||
|
|
# Temporäre Datei für neue Crontab
|
||
|
|
TEMP_CRON=$(mktemp)
|
||
|
|
|
||
|
|
# Hole existierende Crontab (ohne Fehler wenn leer)
|
||
|
|
crontab -l > "$TEMP_CRON" 2>/dev/null || true
|
||
|
|
|
||
|
|
# Prüfe ob Eurojackpot-Jobs bereits existieren
|
||
|
|
if grep -q "eurojackpot" "$TEMP_CRON" 2>/dev/null || grep -q "weekly_tip_generator" "$TEMP_CRON" 2>/dev/null; then
|
||
|
|
echo " ⚠️ Eurojackpot-Cronjobs scheinen bereits zu existieren!"
|
||
|
|
echo " 💡 Möchtest du sie ersetzen? (j/n)"
|
||
|
|
read -p " > " replace
|
||
|
|
|
||
|
|
if [ "$replace" != "j" ] && [ "$replace" != "J" ]; then
|
||
|
|
echo " ⏭️ Installation abgebrochen"
|
||
|
|
rm "$TEMP_CRON"
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Entferne alte Eurojackpot-Einträge
|
||
|
|
grep -v "eurojackpot\|weekly_tip_generator\|auto_update_and_learn" "$TEMP_CRON" > "${TEMP_CRON}.new" || true
|
||
|
|
mv "${TEMP_CRON}.new" "$TEMP_CRON"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Füge neue Cronjobs hinzu
|
||
|
|
cat >> "$TEMP_CRON" << EOF
|
||
|
|
|
||
|
|
# ========== EUROJACKPOT AUTOMATION ==========
|
||
|
|
# Generiert am: $(date '+%Y-%m-%d %H:%M:%S')
|
||
|
|
|
||
|
|
# Montag & Donnerstag 09:00: Tipps generieren (vor Ziehung)
|
||
|
|
0 9 * * 1,4 cd "$PROJECT_PATH" && source venv/bin/activate && python scripts/automation/weekly_tip_generator.py >> "$LOGS_DIR/tips_generation.log" 2>&1
|
||
|
|
|
||
|
|
# Dienstag & Freitag 21:00: Update & Learning (nach Ziehung)
|
||
|
|
0 21 * * 2,5 cd "$PROJECT_PATH" && source venv/bin/activate && python scripts/automation/auto_update_and_learn.py >> "$LOGS_DIR/auto_update.log" 2>&1
|
||
|
|
|
||
|
|
# ==========================================
|
||
|
|
EOF
|
||
|
|
|
||
|
|
# Installiere neue Crontab
|
||
|
|
crontab "$TEMP_CRON"
|
||
|
|
rm "$TEMP_CRON"
|
||
|
|
|
||
|
|
echo " ✅ Cronjobs erfolgreich installiert!"
|
||
|
|
echo ""
|
||
|
|
echo "╔════════════════════════════════════════════════════════════════╗"
|
||
|
|
echo "║ ✅ INSTALLATION ABGESCHLOSSEN ║"
|
||
|
|
echo "╚════════════════════════════════════════════════════════════════╝"
|
||
|
|
echo ""
|
||
|
|
echo "📅 Zeitplan:"
|
||
|
|
echo " Montag 09:00 → Tipps für Dienstag-Ziehung"
|
||
|
|
echo " Dienstag 21:00 → Update & Learning"
|
||
|
|
echo " Donnerstag 09:00 → Tipps für Freitag-Ziehung"
|
||
|
|
echo " Freitag 21:00 → Update & Learning"
|
||
|
|
echo ""
|
||
|
|
echo "📊 Logs anzeigen:"
|
||
|
|
echo " tail -f \"$LOGS_DIR/tips_generation.log\""
|
||
|
|
echo " tail -f \"$LOGS_DIR/auto_update.log\""
|
||
|
|
echo ""
|
||
|
|
echo "🔧 Cronjobs verwalten:"
|
||
|
|
echo " crontab -l # Zeige alle Cronjobs"
|
||
|
|
echo " crontab -e # Bearbeite Cronjobs"
|
||
|
|
echo " crontab -r # Lösche alle Cronjobs"
|
||
|
|
echo ""
|
||
|
|
;;
|
||
|
|
|
||
|
|
2)
|
||
|
|
echo ""
|
||
|
|
echo "╔════════════════════════════════════════════════════════════════╗"
|
||
|
|
echo "║ MANUELLE INSTALLATION ║"
|
||
|
|
echo "╚════════════════════════════════════════════════════════════════╝"
|
||
|
|
echo ""
|
||
|
|
echo "1. Öffne Crontab:"
|
||
|
|
echo " crontab -e"
|
||
|
|
echo ""
|
||
|
|
echo "2. Füge folgende Zeilen am Ende hinzu:"
|
||
|
|
echo ""
|
||
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
|
|
cat << EOF
|
||
|
|
# EUROJACKPOT AUTOMATION
|
||
|
|
# Montag & Donnerstag 09:00: Tipps generieren
|
||
|
|
0 9 * * 1,4 cd "$PROJECT_PATH" && source venv/bin/activate && python scripts/automation/weekly_tip_generator.py >> "$LOGS_DIR/tips_generation.log" 2>&1
|
||
|
|
|
||
|
|
# Dienstag & Freitag 21:00: Update & Learning
|
||
|
|
0 21 * * 2,5 cd "$PROJECT_PATH" && source venv/bin/activate && python scripts/automation/auto_update_and_learn.py >> "$LOGS_DIR/auto_update.log" 2>&1
|
||
|
|
EOF
|
||
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||
|
|
echo ""
|
||
|
|
echo "3. Speichern:"
|
||
|
|
echo " - In vim: ESC, dann :wq"
|
||
|
|
echo " - In nano: Ctrl+X, dann Y, dann Enter"
|
||
|
|
echo ""
|
||
|
|
;;
|
||
|
|
|
||
|
|
*)
|
||
|
|
echo ""
|
||
|
|
echo "⏭️ Installation abgebrochen"
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
echo "💡 Nächste Schritte:"
|
||
|
|
echo ""
|
||
|
|
echo " 1. Teste manuell:"
|
||
|
|
echo " cd \"$PROJECT_PATH\""
|
||
|
|
echo " source venv/bin/activate"
|
||
|
|
echo " python scripts/automation/weekly_tip_generator.py --force"
|
||
|
|
echo ""
|
||
|
|
echo " 2. Prüfe Telegram-Benachrichtigungen:"
|
||
|
|
echo " python scripts/utils/notifier.py --test"
|
||
|
|
echo ""
|
||
|
|
echo " 3. Überwache Logs:"
|
||
|
|
echo " tail -f \"$LOGS_DIR/tips_generation.log\""
|
||
|
|
echo ""
|
||
|
|
echo "🎉 Viel Erfolg mit dem Eurojackpot-System!"
|