# Importing the requirements
# import warnings

# warnings.filterwarnings("ignore")

import gradio as gr
from src.model import describe_video


# Video and text inputs for the interface
video = gr.Video(label="Video")
query = gr.Textbox(label="Query", placeholder="Type your query here")

# Output for the interface
response = gr.Textbox(label="Response", show_label=True, show_copy_button=True)

# Examples for the interface
examples = [
    [
        "./videos/sample_video_1.mp4",
        "Here are some frames of a video. Describe this video in detail",
    ],
    [
        "./videos/sample_video_2.mp4",
        "Which are the animals in this video, and how many are there?",
    ],
    ["./videos/sample_video_3.mp4", "What is happening in this video?"],
]

# Title, description, and article for the interface
title = "Video Understanding & Question Answering"
description = "This Gradio demo uses the MiniCPM-V-2_6 model for video understanding tasks. Upload a video and type a question to get a detailed description or specific information from the video."
article = "<p style='text-align: center'><a href='https://arxiv.org/abs/2407.03320' target='_blank'>InternLM-XComposer-2.5: A Versatile Large Vision Language Model Supporting Long-Contextual Input and Output</a> | <a href='https://huggingface.co/internlm/internlm-xcomposer2d5-7b' target='_blank'>Model Page</a></p>"


# Launch the interface
interface = gr.Interface(
    fn=describe_video,
    inputs=[video, query],
    outputs=response,
    examples=examples,
    title=title,
    description=description,
    article=article,
    theme="Soft",
    allow_flagging="never",
)
interface.launch(debug=False)