Spaces:
Runtime error
Runtime error
File size: 5,898 Bytes
863ee52 19e9ff9 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 843e0a7 863ee52 12b30f9 863ee52 843e0a7 |
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 |
import os
import presentation_assistant.env_set as env
env.env_set()
print(os.getcwd())
import streamlit as st
import PyPDF2
import subprocess
from io import BytesIO
from pptx import Presentation
import presentation_assistant.presentation_assistant as pa
tab1, tab2, tab3 = st.tabs(['Что такое PA!?', 'Текст в ППТ', 'ППТ в сценарий'])
with tab1:
st.header('Введение')
st.title('PA!(Presentation Assistant)')
contents = """
▶ На основе контента, введенного пользователем, он :blue[автоматически создает] ППТ и
предоставляет :red[сценарий] презентации, чтобы улучшить навыки презентации!"""
st.markdown(contents)
st.markdown('-------------------------')
st.header('Как использовать')
st.subheader('Текст в ППТ')
contents = """
▶ Если пользователь предоставляет ссылку или файл, мы :blue[создадим презентационный материал] для вас!
Пользователю нужно только выбрать желаемый тип темы (шаблон) и количество страниц!"""
st.markdown(contents)
st.subheader('ППТ в сценарий')
contents = """
▶ Если пользователь предоставляет презентационные материалы в формате ППТ или PDF, мы автоматически создадим :blue[сценарий презентации] для вас!"""
st.markdown(contents)
# Тест
# 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="Скачать ППТ",
# data = binary_output.getvalue(),
# file_name="export_output.pptx",
# mime='application/octet-stream', key = "<Text2PPT_test_download>")
with tab2:
st.header('Текст в ППТ')
st.subheader(':computer: Автоматический генератор ППТ :computer:')
theme_select = st.selectbox(
'Выберите шаблон, который вы хотите:',
['по умолчанию', 'желтый', 'зеленая градация', 'синий', 'зеленый', 'пользовательский'])
if theme_select == "пользовательский":
uploaded_template_file = st.file_uploader('Выберите файл!', type='pptx', key="<template_uploader>")
st.markdown('-------------------------')
page_choice = st.slider('Количество страниц ППТ', min_value=2, max_value=12, step=1, value=5)
st.markdown('-------------------------')
my_order = ['Текст', 'Ссылка', 'PDF']
status = st.radio('Выберите тип файла и введите содержимое! :smile: ', my_order)
# Первый метод
if status == my_order[0]:
input_text = st.text_area('Введите ТЕКСТ', height=5)
elif status == my_order[1]:
input_text = st.text_area('Введите URL', height=5)
elif status == my_order[2]:
input_text = st.file_uploader('Загрузите PDF', type=['pdf'])
input_text_check = st.button('Подтвердить', key="<Text2PPT_start>")
st.markdown('-------------------------')
if input_text_check == True:
with st.spinner('Подождите...'):
pa.text2ppt(pa.generate_text2ppt_input_prompt(status, input_text, page_choice), theme_select)
prs = Presentation("text2ppt_output.pptx")
binary_output = BytesIO()
prs.save(binary_output)
st.success('Готово!')
st.download_button(label="Скачать ППТ",
data = binary_output.getvalue(),
file_name="export_output.pptx",
mime='application/octet-stream', key = "<Text2PPT_download>")
with tab3:
st.header('ППТ в сценарий')
st.subheader(':computer: Автоматический генератор сценариев :computer:')
st.markdown('-------------------------')
st.subheader(':bookmark: Генератор сценариев презентаций')
file_order = ['PDF', 'ППТ']
choose = st.radio('Выберите формат файла презентационного материала', file_order)
if choose == file_order[0]:
uploaded_file = st.file_uploader('Выберите файл!', type='pdf', key="<PPT2Script_pdf_uploader>")
elif choose == file_order[1]:
uploaded_file = st.file_uploader('Выберите файл!', type='pptx', key="<PPT2Script_ppt_uploader>")
input_file_check = st.button('Подтвердить', key="<PPT2Script_start>") # При нажатии на эту кнопку должен передаваться входной файл
st.markdown('-------------------------')
if input_file_check == True:
with st.spinner('Подождите...'):
with open(uploaded_file.name, mode='wb') as w:
w.write(uploaded_file.getvalue())
script = pa.ppt2script(uploaded_file.name, choose)
st.success('Готово!')
st.download_button('Скачать сценарий',
data=script, file_name="script_output.txt", key="<PPT2Script_download>") |