File size: 3,908 Bytes
b657ab9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env python3
"""
Script de lancement pour l'application Streamlit Foodwatch Analyzer
Usage: python launch.py [--install] [--port 8501]
"""

import subprocess
import sys
import os
import argparse
from pathlib import Path

def check_requirements():
    """Vérifie si toutes les dépendances sont installées"""
    required_packages = [
        'streamlit', 'pandas', 'plotly', 'requests', 
        'beautifulsoup4', 'lxml', 'numpy'
    ]
    
    missing_packages = []
    
    for package in required_packages:
        try:
            __import__(package)
        except ImportError:
            missing_packages.append(package)
    
    return missing_packages

def install_requirements():
    """Installe les dépendances depuis requirements.txt"""
    print("📦 Installation des dépendances...")
    
    if Path("requirements.txt").exists():
        try:
            subprocess.check_call([
                sys.executable, "-m", "pip", "install", "-r", "requirements.txt"
            ])
            print("✅ Dépendances installées avec succès")
            return True
        except subprocess.CalledProcessError as e:
            print(f"❌ Erreur lors de l'installation: {e}")
            return False
    else:
        print("❌ Fichier requirements.txt non trouvé")
        return False

def launch_streamlit(port=8501):
    """Lance l'application Streamlit"""
    if not Path("foodwatch_streamlit_app.py").exists():
        print("❌ Fichier foodwatch_streamlit_app.py non trouvé")
        print("Assurez-vous que le fichier de l'application est présent")
        return False
    
    print(f"🚀 Lancement de l'application sur le port {port}...")
    print(f"🌐 URL: http://localhost:{port}")
    print("👆 Cliquez sur le lien ci-dessus ou copiez-le dans votre navigateur")
    print("🛑 Pour arrêter l'application, appuyez sur Ctrl+C")
    
    try:
        subprocess.run([
            sys.executable, "-m", "streamlit", "run", 
            "foodwatch_streamlit_app.py",
            "--server.port", str(port),
            "--server.headless", "false",
            "--browser.gatherUsageStats", "false"
        ])
        return True
    except KeyboardInterrupt:
        print("\n👋 Application arrêtée par l'utilisateur")
        return True
    except Exception as e:
        print(f"❌ Erreur lors du lancement: {e}")
        return False

def main():
    """Fonction principale"""
    parser = argparse.ArgumentParser(
        description="🛡️ Foodwatch Arnaques Analyzer - Launcher"
    )
    parser.add_argument(
        "--install", 
        action="store_true", 
        help="Installer les dépendances avant le lancement"
    )
    parser.add_argument(
        "--port", 
        type=int, 
        default=8501, 
        help="Port pour l'application Streamlit (défaut: 8501)"
    )
    parser.add_argument(
        "--check", 
        action="store_true", 
        help="Vérifier seulement les dépendances"
    )
    
    args = parser.parse_args()
    
    print("🛡️ Foodwatch Arnaques Analyzer")
    print("=" * 50)
    
    # Vérification des dépendances
    missing = check_requirements()
    
    if missing:
        print(f"⚠️ Dépendances manquantes: {', '.join(missing)}")
        
        if args.install:
            if not install_requirements():
                sys.exit(1)
        else:
            print("💡 Utilisez --install pour installer automatiquement")
            print("Ou manuellement: pip install -r requirements.txt")
            if not args.check:
                sys.exit(1)
    else:
        print("✅ Toutes les dépendances sont installées")
    
    if args.check:
        print("🎉 Vérification terminée")
        return
    
    # Lancement de l'application
    success = launch_streamlit(args.port)
    
    if not success:
        sys.exit(1)

if __name__ == "__main__":
    main()