Update app.py
Browse files
app.py
CHANGED
|
@@ -11,11 +11,10 @@ from utils import (
|
|
| 11 |
get_user_preferences,
|
| 12 |
send_story_email,
|
| 13 |
validate_email,
|
| 14 |
-
|
| 15 |
)
|
| 16 |
|
| 17 |
def main():
|
| 18 |
-
# Page configuration
|
| 19 |
st.set_page_config(
|
| 20 |
page_title="π¨ Image-to-Audio Story π§",
|
| 21 |
page_icon="πΌοΈ",
|
|
@@ -23,21 +22,38 @@ def main():
|
|
| 23 |
)
|
| 24 |
st.title("Turn the Image into Audio Story")
|
| 25 |
|
| 26 |
-
#
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
os.environ['SENDER_EMAIL'] = sender_email
|
| 36 |
os.environ['SENDER_PASSWORD'] = sender_password
|
| 37 |
-
create_gmail_config()
|
| 38 |
st.success("Email configuration saved successfully!")
|
| 39 |
-
else:
|
| 40 |
-
st.error("Please provide both email and password.")
|
| 41 |
|
| 42 |
# LLM Parameters in sidebar
|
| 43 |
st.sidebar.markdown("# βοΈ LLM Configuration")
|
|
@@ -54,8 +70,7 @@ def main():
|
|
| 54 |
st.markdown("## π· Upload Image")
|
| 55 |
uploaded_file = st.file_uploader(
|
| 56 |
"Choose an image...",
|
| 57 |
-
type=["jpg", "jpeg", "png"]
|
| 58 |
-
help="Upload an image to generate a story from"
|
| 59 |
)
|
| 60 |
|
| 61 |
# Story preferences section
|
|
@@ -108,11 +123,9 @@ def main():
|
|
| 108 |
st.audio("audio_story.mp3")
|
| 109 |
|
| 110 |
# Email section
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
# Only show email input if configuration exists
|
| 115 |
-
if os.path.exists('pysnail.conf'):
|
| 116 |
email = st.text_input(
|
| 117 |
"Enter your email address:",
|
| 118 |
help="We'll send you the story text and audio file"
|
|
|
|
| 11 |
get_user_preferences,
|
| 12 |
send_story_email,
|
| 13 |
validate_email,
|
| 14 |
+
validate_gmail_credentials
|
| 15 |
)
|
| 16 |
|
| 17 |
def main():
|
|
|
|
| 18 |
st.set_page_config(
|
| 19 |
page_title="π¨ Image-to-Audio Story π§",
|
| 20 |
page_icon="πΌοΈ",
|
|
|
|
| 22 |
)
|
| 23 |
st.title("Turn the Image into Audio Story")
|
| 24 |
|
| 25 |
+
# Email Configuration in Sidebar
|
| 26 |
+
st.sidebar.markdown("## π§ Email Configuration")
|
| 27 |
+
with st.sidebar.expander("Configure Gmail Settings", expanded=not bool(os.getenv('SENDER_EMAIL'))):
|
| 28 |
+
sender_email = st.text_input(
|
| 29 |
+
"Gmail Address:",
|
| 30 |
+
value=os.getenv('SENDER_EMAIL', ''),
|
| 31 |
+
type="default",
|
| 32 |
+
key="gmail"
|
| 33 |
+
)
|
| 34 |
+
sender_password = st.text_input(
|
| 35 |
+
"App Password:",
|
| 36 |
+
value=os.getenv('SENDER_PASSWORD', ''),
|
| 37 |
+
type="password",
|
| 38 |
+
key="password",
|
| 39 |
+
help="Use an App Password from your Google Account settings"
|
| 40 |
+
)
|
| 41 |
+
|
| 42 |
+
if st.button("Save Configuration"):
|
| 43 |
+
if not sender_email or not sender_password:
|
| 44 |
+
st.error("Please provide both email and password.")
|
| 45 |
+
elif not validate_email(sender_email):
|
| 46 |
+
st.error("Please enter a valid Gmail address.")
|
| 47 |
+
else:
|
| 48 |
+
# Validate credentials
|
| 49 |
+
error = validate_gmail_credentials(sender_email, sender_password)
|
| 50 |
+
if error:
|
| 51 |
+
st.error(f"Failed to validate credentials: {error}")
|
| 52 |
+
else:
|
| 53 |
+
# Save credentials to environment variables
|
| 54 |
os.environ['SENDER_EMAIL'] = sender_email
|
| 55 |
os.environ['SENDER_PASSWORD'] = sender_password
|
|
|
|
| 56 |
st.success("Email configuration saved successfully!")
|
|
|
|
|
|
|
| 57 |
|
| 58 |
# LLM Parameters in sidebar
|
| 59 |
st.sidebar.markdown("# βοΈ LLM Configuration")
|
|
|
|
| 70 |
st.markdown("## π· Upload Image")
|
| 71 |
uploaded_file = st.file_uploader(
|
| 72 |
"Choose an image...",
|
| 73 |
+
type=["jpg", "jpeg", "png"]
|
|
|
|
| 74 |
)
|
| 75 |
|
| 76 |
# Story preferences section
|
|
|
|
| 123 |
st.audio("audio_story.mp3")
|
| 124 |
|
| 125 |
# Email section
|
| 126 |
+
if os.getenv('SENDER_EMAIL') and os.getenv('SENDER_PASSWORD'):
|
| 127 |
+
st.markdown("---")
|
| 128 |
+
st.markdown("## π§ Get Story via Email")
|
|
|
|
|
|
|
| 129 |
email = st.text_input(
|
| 130 |
"Enter your email address:",
|
| 131 |
help="We'll send you the story text and audio file"
|