Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import os | |
| from streamlit_pdf_viewer import pdf_viewer | |
| # Define the base directory where the folders are located | |
| BASE_DIR = "./brevet" | |
| # Utility function to list files for a given subject and type | |
| def get_files(subject, file_type): | |
| subject_path = os.path.join(BASE_DIR, subject) | |
| # Adjust to remove '.pdf' from filenames | |
| if file_type == 'Corrigé': | |
| files = [f.replace(' Corrigé.pdf', '') for f in os.listdir(subject_path) if 'Corrigé' in f] | |
| else: | |
| files = [f.replace('.pdf', '') for f in os.listdir(subject_path) if 'Corrigé' not in f and f.endswith('.pdf')] | |
| return sorted(files, reverse=True) | |
| # Streamlit app layout | |
| st.title("Sujets et Corrigés du Brevet (*Par Studyrama*)") | |
| # Subject selection | |
| subject = st.selectbox("Sélectionner la matière", ["Francais", "Mathématique", "Science", "Histoire-Géographie-EMC"]) | |
| # File type selection (Sujet or Corrigé) | |
| file_type = st.selectbox("Sélectionner le type", ["Sujet", "Corrigé"]) | |
| # Year and File selection based on the subject and file type | |
| files = get_files(subject, file_type) | |
| selected_file = st.selectbox("Sélectionner l'année", files) | |
| file_name = f"{selected_file}{' Corrigé' if file_type == 'Corrigé' else ''}.pdf" | |
| file_path = os.path.join(BASE_DIR, subject, file_name) | |
| # Initialize or update session state for button press | |
| if 'show_pdf' not in st.session_state: | |
| st.session_state.show_pdf = False | |
| # Create columns for the PDF viewer and download button | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| if st.button(f"Afficher {file_type}"): | |
| st.session_state.show_pdf = True | |
| if st.session_state.show_pdf: | |
| pdf_viewer(file_path, width=700) # Adjust width as needed | |
| with col2: | |
| with open(file_path, "rb") as pdf_file: | |
| st.download_button(label=f"Télécharger {file_type}", | |
| data=pdf_file, | |
| file_name=file_name, | |
| mime="application/pdf") |