nowme-images / herramientas.py
Moibe's picture
Model backup
2b6d34d
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}")