import gradio as gr import random from details import get_celebrity_details from model import class_names, predict_celebrity def get_new_target_celebrity(): return random.choice(class_names) target_celebrity = get_new_target_celebrity() def game_mode(image): global target_celebrity celebrity_name = predict_celebrity(image) details = get_celebrity_details(celebrity_name) if celebrity_name == target_celebrity: return f"Congratulations! You uploaded the correct celebrity: {celebrity_name}", details["meme"] else: details["meme"] = None return f"Sorry, try again! another image The target celebrity was {target_celebrity}.", details["meme"] def reset_game(): global target_celebrity target_celebrity = get_new_target_celebrity() return gr.update(value=f"{target_celebrity}"), None with gr.Blocks() as game_block: image_input = gr.Image(type="numpy", label="Upload Celebrity Image") result_text = gr.Textbox(label=f"Target Celebrity:") result_text.value = target_celebrity meme_output = gr.Image(type="filepath", label=" ") game_interface = gr.Interface( fn=game_mode, inputs=image_input, outputs=[result_text, meme_output], live=True ) reset_btn = gr.Button("Reset") reset_btn.click(fn=reset_game, inputs=[], outputs=[result_text, meme_output]) if __name__ == "__main__": game_block.launch()