import os import gradio as gr import json from gradio_client import Client, handle_file # Initialize backend client with error handling try: backend = Client(os.getenv("BACKEND"), hf_token=os.getenv("TOKEN")) except Exception as e: raise Exception(f"Failed to initialize backend client: {str(e)}") def detect(image): """Detect deepfake content in an image with comprehensive error handling""" if image is None: raise gr.Error("Please upload an image to analyze") try: result_text = backend.predict( image=handle_file(image), api_name="/detect" ) result = json.loads(result_text) if not result or result.get("status") != "ok": raise gr.Error("Analysis failed: Invalid response from backend") # Format results professionally overall = f"{result['overall']}% Confidence" aigen = f"{result['aigen']}% (AI-Generated Content Likelihood)" deepfake = f"{result['deepfake']}% (Face Manipulation Likelihood)" return overall, aigen, deepfake except json.JSONDecodeError: raise gr.Error("Error processing analysis results") except Exception as e: raise gr.Error(f"Analysis error: {str(e)}") # Enhanced professional CSS custom_css = """ .container { max-width: 1200px; margin: 0 auto; padding: 20px; font-family: 'Arial', sans-serif; } .header { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; } .button-gradient { background: linear-gradient(45deg, #3498db, #2ecc71, #9b59b6); background-size: 400% 400%; border: none; padding: 12px 24px; font-size: 16px; font-weight: 600; color: white; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; animation: gradientAnimation 3s ease infinite; box-shadow: 0 2px 8px rgba(52, 152, 219, 0.3); } .button-gradient:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(52, 152, 219, 0.5); } @keyframes gradientAnimation { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .label { font-weight: 600; color: #34495e; background: #f8f9fa; padding: 10px; border-radius: 5px; margin: 5px 0; } .footer { color: #7f8c8d; font-size: 14px; margin-top: 20px; } """ # Professional content MARKDOWN0 = """
Advanced AI-powered analysis for identifying manipulated media