Spaces:
Runtime error
Runtime error
File size: 5,058 Bytes
32d94cc 4960cb4 322012d 0259f08 3866c77 de2125a 0259f08 a5582cc 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 7714ced c5836b4 32a03d4 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b db2df24 32a03d4 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 194c66b 0259f08 a5582cc 50d0eb5 b94d0bd 0259f08 b94d0bd 0259f08 194c66b 0259f08 bed2c62 0259f08 194c66b 0259f08 21fe8fd 0259f08 21fe8fd 0259f08 194c66b 0259f08 de2125a 0259f08 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
import os
import presentation_assistant.env_set as env
env.env_set()
print(os.getcwd())
import streamlit as st
import PyPDF2
import openai
import subprocess
from io import BytesIO
from pptx import Presentation
import presentation_assistant.presentation_assistant as pa
tab1, tab2, tab3 = st.tabs(['What is PA!?', 'Text2PPT', 'PPT2Script'])
with tab1:
st.header('Introduction')
st.title('PA!(Presentation Assistant):sparkles:')
contents = """
▶ Based on the content entered by the user, it :blue[automatically creates] PPT and
provides a presentation :red[script] to improve presentation skills!"""
st.markdown(contents)
st.markdown('-------------------------')
st.header('How to use')
st.subheader('Text2PPT')
contents = """
▶ If the user provides a link or file, we will :blue[create a presentation material] for you!
The user only needs to select the desired theme (template) type and number of pages!"""
st.markdown(contents)
st.subheader('PPT2Script')
contents = """
▶ If the user provides PPT or PDF presentation materials, we will automatically create a :blue[presentation script] for you!"""
st.markdown(contents)
# Test
# test_ppt_theme = "--reference-doc="+"/home/user/app/template/blue"+".pptx"
# subprocess.run(["/home/user/app/pandoc-2.14.2/bin/pandoc", "text2ppt_test.md", "-t", "pptx", test_ppt_theme, "-o", "output.pptx"], capture_output=True)
# print(os.listdir(os.getcwd()))
# prs = Presentation("output.pptx")
# binary_output = BytesIO()
# prs.save(binary_output)
# st.download_button(label="Download PPT",
# data = binary_output.getvalue(),
# file_name="export_output.pptx",
# mime='application/octet-stream', key = "<Text2PPT_test_download>")
with tab2:
st.header('Text2PPT')
gpt_token = st.text_input('Please enter your ChatGPT API token.', key="<Text2PPT_token>")
st.markdown('-------------------------')
st.subheader(':computer: PPT Auto Generator :computer:')
thema_select = st.selectbox(
'Please select the template you want.',
['default', 'yellow', 'gradation_green', 'blue', 'green', 'custom'])
if thema_select == "custom":
uploaded_template_file = st.file_uploader('Choose File!', type='pptx', key="<template_uploader>")
st.markdown('-------------------------')
page_choice = st.slider('Number of PPT pages', min_value=2, max_value=10, step=1, value=5)
st.markdown('-------------------------')
my_order = ['Text', 'Link', 'PDF']
status = st.radio('Please select the file type and enter the content! :smile: ', my_order)
# First method
if status == my_order[0]:
input_text = st.text_area('Enter TEXT', height=5)
elif status == my_order[1]:
input_text = st.text_area('Enter URL', height=5)
elif status == my_order[2]:
input_text = st.file_uploader('Upload PDF', type=['pdf'])
input_text_check = st.button('Confirm', key="<Text2PPT_start>")
st.markdown('-------------------------')
if input_text_check == True:
with st.spinner('Wait for it...'):
pa.text2ppt(gpt_token, pa.generate_text2ppt_input_prompt(status, input_text, page_choice), thema_select)
prs = Presentation("text2ppt_output.pptx")
binary_output = BytesIO()
prs.save(binary_output)
st.success('Done!')
st.download_button(label="Download PPT",
data = binary_output.getvalue(),
file_name="export_output.pptx",
mime='application/octet-stream', key = "<Text2PPT_download>")
with tab3:
st.header('PPT2Script')
st.subheader(':computer: Script Auto Generator :computer:')
gpt_token = st.text_input('Please enter your ChatGPT API token.', key="<PPT2Script_token>")
st.markdown('-------------------------')
st.subheader(':bookmark_tabs: Presentation Script Generator')
file_order = ['PDF', 'PPT']
choose = st.radio('Please select the file format of the presentation material', file_order)
if choose == file_order[0]:
uploaded_file = st.file_uploader('Choose File!', type='pdf', key="<PPT2Script_pdf_uploader>")
elif choose == file_order[1]:
uploaded_file = st.file_uploader('Choose File!', type='pptx', key="<PPT2Script_ppt_uploader>")
input_file_check = st.button('Confirm', key="<PPT2Script_start>") # When this button is pressed, the input file should be passed
st.markdown('-------------------------')
if input_file_check == True:
with st.spinner('Wait for it...'):
with open(uploaded_file.name, mode='wb') as w:
w.write(uploaded_file.getvalue())
script = pa.ppt2script(gpt_token, uploaded_file.name, choose)
st.success('Done!')
st.download_button('Download Script',
data=script, file_name="script_output.txt", key="<PPT2Script_download>")
|