|
import gradio as gr |
|
import requests |
|
|
|
|
|
BACKEND_API_URL = "https://sm-plus-api.smplushypermedia.workers.dev" |
|
|
|
def signup_influencer(name, email, social_handle, agree_terms): |
|
if not agree_terms: |
|
return "Please accept the terms and conditions." |
|
|
|
try: |
|
response = requests.post(f"{BACKEND_API_URL}/signup", json={ |
|
"name": name, |
|
"email": email, |
|
"social_handle": social_handle, |
|
"agreed_terms": agree_terms |
|
}) |
|
response.raise_for_status() |
|
return "Signup successful! Please check your email for next steps." |
|
except requests.exceptions.RequestException as e: |
|
return f"Signup failed: {e}. Please try again." |
|
|
|
|
|
def generate_media_content(media_topic_input): |
|
try: |
|
|
|
response = requests.post(f"{BACKEND_API_URL}/generate_content", json={ |
|
"media_topic": media_topic_input |
|
}) |
|
response.raise_for_status() |
|
|
|
|
|
backend_response = response.json() |
|
generated_text = backend_response.get("generated_text") |
|
content_url = backend_response.get("content_url") |
|
|
|
output_message = "" |
|
if generated_text: |
|
output_message += f"### Generated Content Ideas:\n{generated_text}\n\n" |
|
else: |
|
output_message += "No content ideas generated by AI.\n\n" |
|
|
|
if content_url: |
|
output_message += f"**Raw Output Link:** [View full text output]({content_url})" |
|
|
|
return gr.Markdown(output_message) |
|
|
|
except requests.exceptions.RequestException as e: |
|
return gr.Markdown(f"Content generation failed: {e}. Please try again.") |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# SM Plus Influencer Portal") |
|
|
|
with gr.Tab("Sign Up"): |
|
gr.Markdown("## Become an SM Plus Influencer") |
|
name_input = gr.Textbox(label="Your Name") |
|
email_input = gr.Textbox(label="Your Email") |
|
social_input = gr.Textbox(label="Main Social Media Handle") |
|
|
|
gr.Markdown("### Media Carriage and AI Avatar Usage Agreement") |
|
gr.Markdown("Please read the [full agreement here](link_to_your_agreement_pdf_or_page).") |
|
agree_checkbox = gr.Checkbox(label="I agree to the Media Carriage and AI Avatar Usage Agreement.") |
|
|
|
signup_button = gr.Button("Sign Up") |
|
signup_output = gr.Markdown() |
|
signup_button.click( |
|
signup_influencer, |
|
inputs=[name_input, email_input, social_input, agree_checkbox], |
|
outputs=signup_output |
|
) |
|
|
|
with gr.Tab("Media Content Brainstormer"): |
|
gr.Markdown("## Generate Short-Form Media Content Ideas") |
|
gr.Markdown("Enter a topic or idea, and get brainstormed content concepts, visuals, and hooks. Important: Enjoy our complex reasoning model. It can inherently be slower than simpler models (like standard chat models).") |
|
|
|
|
|
media_topic_input = gr.Textbox( |
|
label="Enter your media content topic or idea", |
|
placeholder="e.g., 'unique travel experiences', 'DIY home hacks', 'tech gadget reviews'" |
|
) |
|
|
|
generate_button = gr.Button("Brainstorm Ideas") |
|
|
|
|
|
generated_content_output = gr.Markdown(label="Generated Content Ideas") |
|
|
|
generate_button.click( |
|
generate_media_content, |
|
inputs=[media_topic_input], |
|
outputs=generated_content_output |
|
) |
|
|
|
demo.launch() |