Spaces:
Configuration error
Configuration error
import streamlit as st | |
from ui_utils import check_password | |
from pdf_to_quizz import pdf_to_quizz | |
from text_to_quizz import txt_to_quizz | |
from generate_pdf import generate_pdf_quiz | |
import json | |
import asyncio | |
st.title("PDF to Quiz (:-)(-: )") | |
def build_question(count, json_question): | |
if json_question.get(f"question") is not None: | |
st.write("Question: ", json_question.get(f"question", "")) | |
choices = ['A', 'B', 'C', 'D'] | |
selected_answer = st.selectbox(f"Selectionnez votre réponse:", choices, key=f"select_{count}") | |
for choice in choices: | |
choice_str = json_question.get(f"{choice}", "None") | |
st.write(f"{choice} : {choice_str}") | |
color = "" | |
if st.button("Soumettre", key=f"button_{count}"): | |
rep = json_question.get(f"reponse") | |
if selected_answer in rep: | |
color = ":green" | |
st.write(f":green[Bonne réponse: {rep}]") | |
else: | |
color = ":red" | |
st.write(f":red[Mauvause réponse. La bonne réponse est {rep}].") | |
st.write(f"{color}[Votre réponse: {selected_answer}]") | |
count += 1 | |
return count | |
# Upload PDF file | |
uploaded_file = st.file_uploader(":female-student:", type=["pdf"]) | |
txt = st.text_area('Taper le texte à partir duquel vous voulez générer le quizz') | |
if st.button("Générer Quiz", key=f"button_generer"): | |
if txt is not None: | |
with st.spinner("Génération du quizz..."): | |
st.session_state['questions'] = txt_to_quizz(txt) | |
st.write("Quizz généré avec succès!") | |
if uploaded_file is not None: | |
old_file_name = st.session_state.get('uploaded_file_name', None) | |
if (old_file_name != uploaded_file.name): | |
# Convert PDF to text | |
with st.spinner("Génération du quizz..."): | |
with open(f"data/{uploaded_file.name}", "wb") as f: | |
f.write(uploaded_file.getvalue()) | |
# Initialize session state | |
st.session_state['uploaded_file_name'] = uploaded_file.name | |
st.session_state['questions'] = pdf_to_quizz(f"data/{uploaded_file.name}") | |
st.write("Quizz généré avec succès!") | |
if ('questions' in st.session_state): | |
# Display question | |
count = 0 | |
for json_question in st.session_state['questions']: | |
count = build_question(count, json_question) | |
# generate pdf quiz | |
if st.button("Générer PDF Quiz", key=f"button_generer_quiz"): | |
with st.spinner("Génération du quizz en PDF..."): | |
json_questions = st.session_state['questions'] | |
# save into a file | |
file_name = uploaded_file.name | |
# remove extension .pdf from file name | |
if file_name.endswith(".pdf"): | |
file_name = file_name[:-4] | |
with open(f"data/quiz-{file_name}.json", "w", encoding='latin-1', errors='ignore') as f: | |
str = json.dumps(json_questions) | |
f.write(str) | |
generate_pdf_quiz(f"data/quiz-{file_name}.json", json_questions) | |
st.write("PDF Quiz généré avec succés!") |