Download scriptgen.py from fmmkii/ImaGen: direct link, hf CLI and curl.
- Browser
- Download file 3.23 kB
-
https://huggingface.co/spaces/fmmkii/ImaGen/resolve/main/scriptgen.py
- Command line
-
hf download hf://spaces/fmmkii/ImaGen/scriptgen.py
-
curl -L -o scriptgen.py https://huggingface.co/spaces/fmmkii/ImaGen/resolve/main/scriptgen.py
3.23 kB
| import streamlit as st | |
| from dotenv import load_dotenv, set_key | |
| from generate_script import generate_script | |
| import os | |
| import json | |
| # Load environment variables | |
| load_dotenv() | |
| # Initialize the API key | |
| api_key = st.session_state.get("OPENAI_API_KEY", None) | |
| serper_api_key = st.secrets.get("SERPER_API_KEY") | |
| # Check if API keys are available | |
| if not api_key: | |
| st.error("API Key not provided! Please enter it in the main app.") | |
| else: | |
| os.environ["OPENAI_API_KEY"] = api_key | |
| # File to store script history | |
| history_file = "script_history.json" | |
| # Function to load history from file | |
| def load_history(): | |
| if os.path.exists(history_file): | |
| with open(history_file, "r") as file: | |
| return json.load(file) | |
| return [] | |
| # Function to save history to file | |
| def save_history(history): | |
| with open(history_file, "w") as file: | |
| json.dump(history, file, indent=4) | |
| # Load history from JSON file | |
| script_history = load_history() | |
| # Layout with two columns | |
| col1, col2 = st.columns(2) | |
| # Left column for inputs | |
| with col1: | |
| st.subheader("Input 👇") | |
| prompt = st.text_input("Provide the topic of the video:", placeholder="e.g., How to bake a cake") | |
| video_length = st.number_input("Specify length in minutes", min_value=1.0, step=0.5, value=10.0) | |
| with st.sidebar: | |
| st.title("Options") | |
| creativity = st.slider("Set creativity level:", min_value=0.0, max_value=1.0, value=0.5) | |
| # Button to generate the video script | |
| generate_script_button = st.button("Generate Script") | |
| # Right column for results | |
| with col2: | |
| st.subheader("Output ✨") | |
| if generate_script_button: | |
| if not prompt: | |
| st.error("Please provide a topic for the video.") | |
| else: | |
| try: | |
| # Generate the video script using the utility function | |
| with st.spinner("Generating your script..."): | |
| title, script, search_data = generate_script(prompt, video_length, creativity, api_key, serper_api_key) | |
| # Display the results | |
| st.success("Script generated successfully!") | |
| st.subheader(f"Title: {title}") | |
| st.write(f"Script: {script}") | |
| # Save the new script directly to the JSON file | |
| new_entry = { | |
| "title": title, | |
| "script": script, | |
| "search_data": search_data, | |
| } | |
| script_history.append(new_entry) | |
| save_history(script_history) | |
| # Add a download button for the generated script | |
| st.download_button( | |
| label="Download Script", | |
| data=script, | |
| file_name="generated_script.txt", | |
| mime="text/plain", | |
| ) | |
| # Display additional search data | |
| with st.expander("Show search data for the script"): | |
| st.write(search_data) | |
| except Exception as e: | |
| # Handle any errors that occur during script generation | |
| st.error("An error occurred. Try again.") | |
| with st.expander("Expand to see details"): | |
| st.write(f"{e}") | |