Spaces:
Running
Running
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}") | |