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