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}")