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"""
""" 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""" """ 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("""powered by donaldtrumpaivoice.com
# 🔥 Try the most advanced Trump AI Voice and Video generator for FREE at # donaldtrumpaivoice.com! #
#Click trump ai voices showcase to see more videos