import gradio as gr import time import uuid from util import ( create_task_v3, get_task_result, ) IP_Dict = {} def generate_trump_voice_with_realtime_updates(text, word_num, request: gr.Request): """ Trump AI voice generation function with real-time status updates """ client_ip = request.client.host x_forwarded_for = dict(request.headers).get('x-forwarded-for') if x_forwarded_for: client_ip = x_forwarded_for if client_ip not in IP_Dict: IP_Dict[client_ip] = 0 IP_Dict[client_ip] += 1 print(f"client_ip: {client_ip}, count: {IP_Dict[client_ip]}") if IP_Dict[client_ip] > 2: msg = "You have reached the maximum number of requests" # Create "Get More Tries" button HTML get_more_tries_html = f"""
🚀 Get More Tries for Free
""" yield msg, None, "", gr.update(value=get_more_tries_html, visible=True), "" return msg, None, "", gr.update(value=get_more_tries_html, visible=True), "" if not text or len(text.strip()) < 3: return "Text too short, please enter at least 3 characters", None, "No task information", gr.update(visible=False), "" try: task_type = "voice" # Create task task_result = create_task_v3(task_type, text.strip(), word_num, is_rewrite=False) if not task_result: return "Failed to create task", None, "Task creation failed", gr.update(visible=False), "" else: yield "Task created successfully", None, "Task creation successful", gr.update(visible=False), "" max_polls = 300 poll_interval = 1 task_url = f"https://donaldtrumpaivoice.com/task/{task_result['uuid']}" for i in range(max_polls): time.sleep(poll_interval) task = get_task_result(task_result['uuid']) # print(task, i, "get_task_result") if task.get('data', {}): status = task.get('data').get('status', '') text_final = task.get('data').get('text_final', '') if status in ['completed',]: voice_url = task.get('data').get('voice_url', '') # Create action buttons HTML action_buttons_html = f"""
🎬 Generate Video 👀 Check Generate Details
""" yield f"✅ success!!!", voice_url, text_final, gr.update(value=action_buttons_html, visible=True), task_url return "✅ Generation successful!", voice_url, "success", gr.update(value=action_buttons_html, visible=True), task_url elif status in ['failed', 'voice_error', 'no_credits']: yield "❌ Generation failed!", None, None, gr.update(visible=False), "" return "❌ Generation failed!", None, None, gr.update(visible=False), "" else: yield f"query {i} times, on processing, go to task page {task_url} to check status", None, text_final, gr.update(visible=False), task_url return "❌ Generation failed!", None, None, gr.update(visible=False), "" except Exception as e: error_msg = f"Generation failed: {str(e)}" yield error_msg, None, f"❌ Error message: {error_msg}", gr.update(visible=False), "" return error_msg, None, f"❌ Error message: {error_msg}", gr.update(visible=False), "" # Create Gradio Interface with gr.Blocks(title="Donald Trump AI Voice", theme=gr.themes.Soft()) as demo: # Main title - at the top gr.HTML("""

🎤 Trump AI Voice

""", padding=False) # # Showcase link banner - second # gr.HTML(""" #
#
#

# 🎬 Check out Trump AI videos created by others → #

#
#
# """, padding=False) # Powered by link - small text gr.HTML("""

powered by donaldtrumpaivoice.com

""", padding=False) # Simple description text - third # gr.HTML(""" #
#

# 🔥 Try the most advanced Trump AI Voice and Video generator for FREE at # donaldtrumpaivoice.com! #

#
# """) with gr.Row(): with gr.Column(scale=2): text_input = gr.Textbox( label="📝 Input Text", lines=4, placeholder="Enter what you want Trump to say...", value="Hello everyone, this is a demonstration of the Trump AI Voice system with real-time status monitoring." ) with gr.Column(scale=1): word_num_slider = gr.Slider( 10, 30, value=20, step=1, label="⏱️ Duration (Word Count)" ) submit_btn = gr.Button( "🚀 Generate Trump AI Voice", variant="primary", size="lg" ) with gr.Row(): status_output = gr.Textbox( label="📊 Status", interactive=False, placeholder="Waiting for generation..." ) # Action buttons that will show after task completion with gr.Row(): action_links = gr.HTML(visible=False) with gr.Row(): audio_output = gr.Audio( label="🎵 Trump AI Voice", interactive=False ) with gr.Row(): task_info = gr.Textbox( label="📋 AI Rewritten Text with Latest News", interactive=False, lines=12, placeholder="AI rewritten text with the latest news will be shown here..." ) # Powered by link - small text gr.HTML("""

Click trump ai voices showcase to see more videos

""", padding=False) # Hidden state to store task_url task_url_state = gr.State("") # Bind event submit_btn.click( generate_trump_voice_with_realtime_updates, inputs=[text_input, word_num_slider], outputs=[status_output, audio_output, task_info, action_links, task_url_state] ) if __name__ == "__main__": demo.launch()