nowme-images / herramientas.py
Moibe's picture
Enviroment Firebase
f7095e2
raw
history blame
6.33 kB
import time
from datetime import datetime
from datetime import datetime, date, timedelta
import conexion_firebase
def obtenUltimoTimestamp():
"""
Obtiene el último timestamp de renovación guardado.
"""
resultado = conexion_firebase.obtenDato('nowme', 'huggingface', 'last_timestamp')
return resultado
#Antes se hacía con archivos estáticos.
# try:
# archivo_ruta = "archivos/last_timestamp.txt"
# 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():
if esDiaSiguiente() == True:
renuevaSegundosDisponibles()
renuevaModeloPrincipal()
#Finalmente obten los segundos disponibles después de las operaciones.
return conexion_firebase.obtenDato('nowme', 'huggingface', 'segundos')
# try:
# archivo_ruta = "archivos/seconds_available.txt"
# # 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
conexion_firebase.editaDato('nowme', 'huggingface', 'segundos', quota_total)
renuevaTimestampActual()
# Guardar el nuevo número en el archivo
# try:
# archivo_ruta = "archivos/seconds_available.txt"
# with open(archivo_ruta, 'w') as archivo:
# archivo.write(str(quota_total))
# print(f"Se renovaron los {quota_total} segundos disponibles.")
# except Exception as e:
# print(f"Error al escribir en el archivo '{archivo_ruta}': {e}")
def renuevaTimestampActual():
timestamp_actual = int(time.time())
conexion_firebase.editaDato('nowme', 'huggingface', 'last_timestamp', timestamp_actual)
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...")
segundos_disponibles = obtenSegundosDisponibles()
# Restar los segundos
nuevos_segundos_disponibles = segundos_disponibles - segundos
conexion_firebase.editaDato('nowme', 'huggingface', 'segundos', nuevos_segundos_disponibles)
# # Guardar el nuevo número en el archivo
# try:
# archivo_ruta = "archivos/seconds_available.txt"
# 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...")
modelo_actual = conexion_firebase.obtenDato('nowme', 'huggingface', 'modelo_actual')
conexion_firebase.editaDato('nowme', 'huggingface', 'modelo_actual', nuevo_modelo)
print(f"Se actualizó el modelo actual: {modelo_actual} por {nuevo_modelo}.")
# Guardar el nuevo número en el archivo
# try:
# archivo_ruta = "archivos/modelo_actual.txt"
# with open(archivo_ruta, 'w') as archivo:
# archivo.write(nuevo_modelo)
# except Exception as e:
# print(f"Error al escribir en el archivo '{archivo_ruta}': {e}")
def renuevaModeloPrincipal():
#Obten el modelo principal (default).
modelo_principal = conexion_firebase.obtenDato('nowme', 'huggingface', 'modelo_principal')
#Asignalo como modelo actual.
conexion_firebase.editaDato('nowme', 'huggingface', 'modelo_actual', modelo_principal)
def imprimeTime():
timestamp_actual = int(time.time())
fecha_hora = datetime.fromtimestamp(timestamp_actual)
fecha_hora_legible = fecha_hora.strftime('%Y-%m-%d %H:%M:%S')
return fecha_hora_legible
def esDiaSiguiente():
"""
Compara dos timestamps Unix y devuelve True si el día de timestamp_actual
es diferente al día de timestamp_registro.
Args:
timestamp_registro (int): Timestamp Unix del registro original (en segundos).
timestamp_actual (int): Timestamp Unix actual (en segundos).
Returns:
bool: True si el día de timestamp_actual es diferente al día de
timestamp_registro, False si es el mismo día.
"""
# Convertir los timestamps Unix a objetos datetime (zona horaria local)
fecha_registro_dt = datetime.fromtimestamp(obtenUltimoTimestamp())
fecha_actual_dt = datetime.fromtimestamp(int(time.time())) #Timestamp actual.
# Extraer solo la fecha de los objetos datetime
fecha_registro = fecha_registro_dt.date()
fecha_actual = fecha_actual_dt.date()
# Verificar si las fechas son diferentes
return fecha_actual > fecha_registro