import gradio as gr
from transformers import pipeline

# Load the pre-trained sentiment analysis model
sentiment_model = pipeline("sentiment-analysis", model="nlptown/bert-base-multilingual-uncased-sentiment")

# Function to analyze sentiment
def analyze_sentiment(text):
    # Get sentiment predictions
    result = sentiment_model(text)
    label = result[0]['label']
    score = result[0]['score']
    
    # Format the sentiment into human-friendly text
    label_mapping = {
        '1 star': 'Very Negative',
        '2 stars': 'Negative',
        '3 stars': 'Neutral',
        '4 stars': 'Positive',
        '5 stars': 'Very Positive'
    }
    sentiment_result = f"**Sentiment**: {label_mapping[label]}\n**Confidence**: {score:.2f}"
    return sentiment_result

# Custom CSS for appealing colors on dark and light themes
css = """
body {background-color: #f4f4f4; font-family: 'Arial'; color: #333;}
input, textarea {border-radius: 10px; border: 2px solid #999; padding: 10px; background-color: #fff; color: #333;}
button {background-color: #3498db; color: white; border: none; padding: 10px 20px; border-radius: 10px; cursor: pointer;}
button:hover {background-color: #2980b9;}
.output-text {font-size: 18px; color: #333;}
footer {display: none !important;}
/* Dark theme */
@media (prefers-color-scheme: dark) {
    body {background-color: #2c3e50; color: #ecf0f1;}
    input, textarea {background-color: #34495e; color: #ecf0f1; border: 2px solid #999;}
    button {background-color: #2980b9;}
    button:hover {background-color: #1abc9c;}
    .output-text {color: #ecf0f1;}
}
"""

# Create Gradio interface with enhanced UI and updated description
interface = gr.Interface(
    fn=analyze_sentiment,
    inputs=gr.Textbox(
        lines=5, 
        placeholder="Enter a marketplace review or sentence here...",
        label="Input Review",
    ),
    outputs=gr.Markdown(),
    title="Sentiment Reveal",
    description=(
        "Analyze the sentiment of product reviews in English, Dutch, German, French, Italian, and Spanish. Focused Sentiment Analysis for eCommerce."
    ),
    examples=[["This product is amazing! I highly recommend it."],
              ["I'm very disappointed with this purchase."],
              ["The product was okay, not great but not terrible."]],
    allow_flagging="never",
    css=css,
)

# Launch the app with sharing enabled
interface.launch(share=True)