File size: 6,901 Bytes
2011e87
12cb4be
95da284
2011e87
 
 
95da284
2011e87
 
 
95da284
2011e87
 
 
 
 
 
 
 
 
 
 
95da284
afbac77
95da284
2011e87
 
95da284
12cb4be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2b6d34d
12cb4be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
afbac77
2b6d34d
12cb4be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95da284
 
 
 
12cb4be
 
 
 
 
 
 
 
95da284
 
12cb4be
2b6d34d
12cb4be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2b6d34d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
import os
import time
import socket

def obtenAccesoHF():
    if local_check():
        print("Estoy en entorno Local...")        
        import bridges
        llave = bridges.llave
    else:
        print("Estoy en entorno Remoto...")
        llave = os.getenv("llave")
        print("Ésto es llave:", llave)

    return llave

def local_check(): 

    hostname = socket.gethostname()
    #r-moibe-nowme
    print("Dentro de local_check... , el hostname es: ", hostname)

    #Estoy usando el nombre de la app para identificar que estoy corriendola en HF.
    if "-nowme" in hostname:
        print("Ejecutando api en el servidor.")
        return False
    else:
        print("Ejecutando api en local.")
        return True

def obtenUltimoTimestamp():
    """
    Obtiene el último timestamp de renovación guardado.
    """

    archivo_ruta = "archivos/last_timestamp.txt"

    try:
        with open(archivo_ruta, 'r') as archivo:
            contenido = archivo.readline().strip()
            ultimo_timestamp = int(contenido)
            return ultimo_timestamp
    except FileNotFoundError:
        print(f"Error: El archivo '{archivo_ruta}' no fue encontrado.")
        return 
    except ValueError:
        print(f"Error: El contenido del archivo '{archivo_ruta}' no es un número entero válido.")
        return

def esNuevoDia():
    """
    Compara dos timestamps (en formato string ISO) y devuelve True si han
    pasado más de 24 horas entre ellos, False en caso contrario.
    """

    timestamp_original = obtenUltimoTimestamp()
    timestamp_actual = int(time.time())

    try:
        segundos_en_24_horas = 24 * 60 * 60
        diferencia_en_segundos = abs(timestamp_actual - timestamp_original)
        return diferencia_en_segundos > segundos_en_24_horas
    except ValueError:
        print("Error: Formato de timestamp incorrecto.")
        return False
    
def obtenSegundosDisponibles(): 

    print("Estoy en obten segundos disponibles...")

    if esNuevoDia() == True: 
        renuevaSegundosDisponibles()

    archivo_ruta = "archivos/seconds_available.txt"

    try:
        # Leer el número actual de segundos disponibles
        with open(archivo_ruta, 'r') as archivo:
            contenido = archivo.readline().strip()
            segundos_disponibles = int(contenido)
            return segundos_disponibles
    except FileNotFoundError:
        print(f"Error: El archivo '{archivo_ruta}' no fue encontrado.")
        return
    except ValueError:
        print(f"Error: El contenido del archivo '{archivo_ruta}' no es un número entero válido.")
        return
    
def renuevaSegundosDisponibles():

    #Segundos de cuota total gratuita disponibles al momento.
    quota_total = 300 

    print("Estoy en renuevaSegundosDisponibles...")

    archivo_ruta = "archivos/seconds_available.txt"

    # Guardar el nuevo número en el archivo
    try:
        with open(archivo_ruta, 'w') as archivo:
            archivo.write(str(quota_total))
        print(f"Se renovaron los {quota_total} segundos disponibles.")
        renuevaTimestampActual()
        renuevaModeloPrincipal()
    except Exception as e:
        print(f"Error al escribir en el archivo '{archivo_ruta}': {e}") 

def renuevaTimestampActual(): 

    print("Estoy en renuevatimestmap actual...")
    archivo_ruta = "archivos/last_timestamp.txt"

    timestamp_actual = int(time.time())

    # Guardar el nuevo número en el archivo
    try:
        with open(archivo_ruta, 'w') as archivo:
            archivo.write(str(timestamp_actual))
        print(f"Se renovó por el timestamp de éste momento.")
    except Exception as e:
        print(f"Error al escribir en el archivo '{archivo_ruta}': {e}")     

def restaSegundosGPU(segundos):
    """
    Lee el número de segundos disponibles desde seconds_available.txt,
    resta los segundos dados como parámetro y guarda el nuevo valor en el archivo.
    """

    print("Estoy en resta segundos...")
    archivo_ruta = "archivos/seconds_available.txt"
    segundos_disponibles = obtenSegundosDisponibles()    

    # Restar los segundos
    nuevos_segundos_disponibles = segundos_disponibles - segundos

    # Guardar el nuevo número en el archivo
    try:
        with open(archivo_ruta, 'w') as archivo:
            archivo.write(str(nuevos_segundos_disponibles))
        print(f"Se restaron {segundos} segundos. Ahora quedan {nuevos_segundos_disponibles} segundos disponibles.")
    except Exception as e:
        print(f"Error al escribir en el archivo '{archivo_ruta}': {e}") 


def modificaModeloActual(nuevo_modelo):
    """
    Actualiza el archivo archivos/modelo_actual.txt con el modelo funcional en caso de
    problemas con el actual.
    """

    print("Estoy en actualiza modelo actual...")
    archivo_ruta = "archivos/modelo_actual.txt"
    modelo_actual = obtenModeloActual()    
 

    # Guardar el nuevo número en el archivo
    try:
        with open(archivo_ruta, 'w') as archivo:
            archivo.write(nuevo_modelo)
        print(f"Se actualizó el modelo actual: {modelo_actual} por {nuevo_modelo}.")
    except Exception as e:
        print(f"Error al escribir en el archivo '{archivo_ruta}': {e}") 

def obtenModeloActual():
    """
    Obtiene el último timestamp de renovación guardado.
    """
    
    archivo_ruta = "archivos/modelo_actual.txt"

    try:
        with open(archivo_ruta, 'r') as archivo:
            contenido = archivo.readline().strip()
            modelo_actual = str(contenido)
            return modelo_actual
    except FileNotFoundError:
        print(f"Error: El archivo '{archivo_ruta}' no fue encontrado.")
        return 
    except ValueError:
        print(f"Error: El contenido del archivo '{archivo_ruta}' no es un número entero válido.")
        return
    
def obtenModeloPrincipal():
    """
    Obtiene el modelo principal (default).
    """
    
    archivo_ruta = "archivos/modelo_principal.txt"

    try:
        with open(archivo_ruta, 'r') as archivo:
            contenido = archivo.readline().strip()
            modelo_principal = str(contenido)
            return modelo_principal
    except FileNotFoundError:
        print(f"Error: El archivo '{archivo_ruta}' no fue encontrado.")
        return 
    except ValueError:
        print(f"Error: El contenido del archivo '{archivo_ruta}' no es un número entero válido.")
        return


def renuevaModeloPrincipal():

    archivo_ruta = "archivos/modelo_actual.txt"   
    modelo_actual = obtenModeloActual() 
    modelo_principal = obtenModeloPrincipal()

    # Guardar el nuevo número en el archivo
    try:
        with open(archivo_ruta, 'w') as archivo:
            archivo.write(modelo_principal)
        print(f"Se actualizó el modelo principal: {modelo_actual} por {modelo_principal}.")
    except Exception as e:
        print(f"Error al escribir en el archivo '{archivo_ruta}': {e}")