Spaces:
Runtime error
Runtime error
| import traceback | |
| import streamlit as st | |
| from genppt import GenPPT | |
| from utils import * | |
| max_pages=20 | |
| max_chars=max_pages*2000 | |
| def get_upload_file(uploaded_file,page_range): | |
| import fitz # PyMuPDF | |
| import pymupdf4llm | |
| if uploaded_file is not None: | |
| # Open the uploaded file with PyMuPDF | |
| document = fitz.open(stream=uploaded_file.read(), filetype="pdf") | |
| pages=parse_page_ranges(page_range, document.page_count, max_pages) | |
| markdown_content=pymupdf4llm.to_markdown(document, pages=pages) | |
| return markdown_content | |
| def create_ui(): | |
| st.set_page_config(page_title="GenSlides", page_icon="📊", layout="wide") | |
| st.title("GenSlides") | |
| st.subheader("Generate PowerPoint slides from your text or PDF") | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| agenda = st.text_input("Enter the main points or topics you want to cover in your presentation.") | |
| content_type = st.radio("Choose content type:", ("Text", "PDF")) | |
| if content_type == "Text": | |
| content = st.text_area("Enter your text:", height=400) | |
| else: | |
| uploaded_file = st.file_uploader("Upload a PDF file", type="pdf") | |
| if uploaded_file: | |
| st.success("PDF uploaded successfully!") | |
| with col2: | |
| st.subheader("Advanced Options") | |
| #max_pages = st.number_input("Maximum number of pages:", min_value=1, max_value=200, value=100) | |
| page_range = st.text_input(f"Page range (e.g. 2,3,5-8,9 or leave empty for all) (Max of {max_pages} pages):", "") | |
| if st.button("Generate Slides", type="primary"): | |
| try: | |
| with st.spinner("Generating slides..."): | |
| if content_type == "Text" and content: | |
| pp = GenPPT(text=content[:max_chars], agenda=agenda, pages=page_range) | |
| elif content_type == "PDF" and uploaded_file: | |
| content=get_upload_file(uploaded_file,page_range) | |
| pp = GenPPT(text=content, agenda=agenda, pages=page_range) | |
| else: | |
| st.error("Please provide either text content or upload a PDF file.") | |
| return | |
| filename = pp.run() | |
| st.success(f"Slides generated successfully! File: {filename}") | |
| # Add a download button for the generated file | |
| with open(filename, "rb") as file: | |
| st.download_button( | |
| label="Download Slides", | |
| data=file, | |
| file_name=filename, | |
| mime="application/vnd.openxmlformats-officedocument.presentationml.presentation" | |
| ) | |
| except Exception as e: | |
| st.error("Error in generating slides.") | |
| st.error(traceback.format_exc()) | |
| if __name__ == "__main__": | |
| create_ui() |