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