Spaces:
Sleeping
Sleeping
File size: 3,823 Bytes
a42c61e |
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 |
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):
# Créer les credentials à partir du token d'accès
creds = Credentials(token=access_token)
# Construire le service Google Docs avec les credentials
docs_service = build('docs', 'v1', credentials=creds)
# Requête pour obtenir le contenu du document
try:
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 = "" # Regrouper tout le texte d'un paragraphe
for paragraph in element['paragraph']['elements']:
t = paragraph.get('textRun', {}).get('content', '')
paragraph_text += t # Ajouter le texte à la ligne du paragraphe
# Ajouter le paragraphe complet s'il contient du texte
if paragraph_text.strip():
lines.append(paragraph_text.strip())
return lines # Retourne une liste contenant toutes les lignes
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)
print("\nContenu du document ligne par ligne :")
# for idx, line in enumerate(lines, start=1):
# print(f"Ligne {idx}: {line}")
return lines
except Exception as e:
st.write(f"Erreur : {e}")
def format_param():
try:
lines = read_param()
label = []
question = []
options = [[] for _ in range(8)]
i = 0
for p in range(8):
while (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 (lines[i][:3] != "==="):
options[p].append(lines[i])
i +=1
i+=1
while i<len(lines):
question.append(lines[i])
i +=1
print("label:\n",label)
print("question:\n",question)
print("options:\n",options)
except Exception as e:
st.write(f"Erreur : {e}")
return label, question, options
|