Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import google.generativeai as genai | |
| import os | |
| from dotenv import load_dotenv | |
| # Load environment variables | |
| load_dotenv() | |
| api_key = os.getenv("GEMINI_API_KEY") # Gets the Google Gemini API key | |
| # Check if API key is set | |
| if not api_key: | |
| st.error("β Error: Google API key is missing. Please check your .env file.") | |
| st.stop() | |
| # Set up Google Gemini AI | |
| genai.configure(api_key=api_key) | |
| # Streamlit UI | |
| st.set_page_config(page_title="REYREY's AI Poetry Translator", page_icon="π", layout="centered") | |
| st.title("π REYREY's Poetry Translator π") | |
| st.write("Enter a phrase, sentence, or paragraph, and I'll transform it into poetry!") | |
| # Get user input | |
| text_input = st.text_area("Enter text:", placeholder="Type something here...") | |
| # Let user choose a poetry style | |
| poetry_style = st.selectbox( | |
| "Choose a poetry style:", | |
| ["Shakespearean", "Haiku", "Free Verse", "Sonnet", "Limerick", "Rhyming Couplets"] | |
| ) | |
| # Generates a poem using Google Gemini AI | |
| def generate_poetry(text, style, retry=False): | |
| try: | |
| prompt = f"Convert the following text into {style} poetry:\n\n{text}\n\nPoem:" | |
| model = genai.GenerativeModel("gemini-pro") # Uses Google's Gemini Pro model | |
| response = model.generate_content(prompt) | |
| # Checks if AI returned a valid response | |
| if response and hasattr(response, "text") and response.text: | |
| return response.text.strip() | |
| # Retries with a softer prompt if the first attempt is blocked | |
| if not retry: | |
| softer_prompt = f"Write a short {style} poem based on this idea: {text}" | |
| response = model.generate_content(softer_prompt) | |
| if response and hasattr(response, "text") and response.text: | |
| return response.text.strip() | |
| # Returns a friendly message if AI refuses to generate a poem | |
| return "β οΈ AI couldn't generate a poem. Try rewording your input." | |
| except Exception as e: | |
| return f"β Error generating poem: {str(e)}" | |
| # Runs when the user clicks the button | |
| if st.button("Generate Poetry β¨"): | |
| if text_input: | |
| with st.spinner("Creating your poem... π"): | |
| poem = generate_poetry(text_input, poetry_style) | |
| if poem.startswith("β Error"): | |
| st.error(poem) | |
| else: | |
| st.success("Hereβs your poetic masterpiece:") | |
| st.text_area("Generated Poem:", poem, height=200) | |
| st.button("π Copy to Clipboard", on_click=lambda: st.session_state.update({"copy_text": poem})) | |
| else: | |
| st.warning("Please enter text to generate poetry!") | |
| # Footer | |
| st.markdown("---") | |
| st.write("π¨ Created with β€οΈ using Google Gemini & Streamlit") | |