Spaces:
Running
Running
File size: 3,760 Bytes
a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 a42c61e 70d35b5 |
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 |
import os
import requests
import streamlit as st
from googleapiclient.discovery import build
from google.auth.credentials import AnonymousCredentials
from google.auth.transport.requests import Request
from dotenv import load_dotenv
from google.oauth2.credentials import Credentials
if st.session_state.Cloud != 0:
load_dotenv()
# Charger les secrets depuis les variables d'environnement
CLIENT_ID = os.getenv("GOOGLE_CLIENT_ID")
CLIENT_SECRET = os.getenv("GOOGLE_CLIENT_SECRET")
REFRESH_TOKEN = os.getenv("GOOGLE_REFRESH_TOKEN")
GOOGLE_PREPROMPT_FILE_ID = os.getenv("GOOGLE_PREPROMPT_FILE_ID")
# URL pour rafraîchir le token
TOKEN_URL = "https://oauth2.googleapis.com/token"
# Fonction pour obtenir un token d'accès
def get_access_token():
data = {
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"refresh_token": REFRESH_TOKEN,
"grant_type": "refresh_token",
}
response = requests.post(TOKEN_URL, data=data)
response_data = response.json()
if "access_token" in response_data:
return response_data["access_token"]
else:
raise Exception(f"Erreur d'obtention du token d'accès : {response_data}")
# Obtenir le token d'accès
access_token = get_access_token()
# Fonction pour lire le contenu d'un Google Doc
def read_google_doc(doc_id):
try:
# Créer les credentials à partir du token d'accès
creds = Credentials(
token=access_token,
refresh_token=REFRESH_TOKEN,
token_uri="https://oauth2.googleapis.com/token",
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
# Construire le service Google Docs avec les credentials
docs_service = build('docs', 'v1', credentials=creds)
# Requête pour obtenir le contenu du document
document = docs_service.documents().get(documentId=doc_id).execute()
content = document.get('body', {}).get('content', [])
# Initialiser une liste pour stocker chaque ligne
lines = []
# Extraire chaque ligne de texte
for element in content:
if 'paragraph' in element:
paragraph_text = ""
for paragraph in element['paragraph']['elements']:
t = paragraph.get('textRun', {}).get('content', '')
paragraph_text += t
if paragraph_text.strip():
lines.append(paragraph_text.strip())
return lines
except Exception as e:
raise Exception(f"Erreur lors de la lecture du document : {e}")
def read_param():
# Lire et afficher le contenu d'un fichier
try:
lines = read_google_doc(GOOGLE_PREPROMPT_FILE_ID)
return lines
except Exception as e:
st.write(f"Erreur : {e}")
def format_param():
try:
lines = read_param()
if not lines:
raise Exception("Le contenu du document est vide.")
label = []
question = []
options = [[] for _ in range(8)]
i = 0
for p in range(8):
while i < len(lines) and len(lines[i]) >= 3 and lines[i][:3] == "===":
i += 1
label.append(lines[i][8:])
i += 1
if p not in [0, 1, 2]:
question.append(lines[i])
i += 1
else:
question.append("")
while i < len(lines) and len(lines[i]) >= 3 and lines[i][:3] != "===":
options[p].append(lines[i])
i += 1
i += 1
while i < len(lines):
question.append(lines[i])
i += 1
except Exception as e:
st.write(f"Erreur : {e}")
return label, question, options |