Value-Props / tabs /google_drive_read_preprompt.py
Demosthene-OR's picture
......
a42c61e
raw
history blame
3.82 kB
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