Spaces:
Runtime error
Runtime error
File size: 5,366 Bytes
9cc66e2 |
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 |
import streamlit as BaseBuilder
from PIL import Image
import json
class Page():
def __init__(self):
self.__ = BaseBuilder
self.imgg = Image
def page(self):
return self.__
def new_page(self, title: str, icon=str(), color_divider="rainbow"):
self.page().set_page_config(page_title=title,
page_icon=icon,
layout="wide")
self.page().title(f"Clasificación de imágenes con Visión Artificial",
anchor="titulo-proyecto",
help=None)
self.page().subheader(f"{title} {icon}",
anchor="titulo-pagina",
divider=color_divider,
help=None)
self.check_password()
def new_body(self, new=False):
self.__body = BaseBuilder.empty() if new else self.page().container()
def get_body(self):
return self.__body
def init_globals(self, globals=dict({})):
for _k, _v in globals.items():
if self.get_global(_k,None) is None:
self.set_global(_k, _v)
def set_global(self, key=str(), value=None):
self.page().session_state[key] = value
def get_global(self, key=str(), default=None, is_secret=False):
if is_secret:
return self.page().secrets.get(key, default)
else:
return self.page().session_state.get(key, default)
def cargar_css(self, archivo_css=str("default")):
ruta = f"core/estilos/{archivo_css}.css"
try:
with open(ruta) as archivo:
self.page().markdown(
f'<style>{archivo.read()}</style>', unsafe_allow_html=True)
except Exception as er:
print(f"Error:\n{er}")
def check_password(self):
if self.user_logged_in():
self.page().sidebar.success("👨💻 Conectado")
self.page().sidebar.button("Logout", use_container_width=True,
type="primary", on_click=self.logout)
return True
else:
self.page().sidebar.subheader("# ¡👨💻 Desbloquea todas las funciones!")
self.page().sidebar.write("¡Ingresa tu Usuario y Contraseña!")
self.page().sidebar.text_input("Usuario", value="",
on_change=self.login, key="USUARIO")
self.page().sidebar.text_input("Password", type="password",
on_change=self.login, key="PASSWORD", value="")
self.page().sidebar.button("LogIn", use_container_width=True, on_click=self.login)
return False
def user_logged_in(self):
return self.get_global('logged_in', False)
def login(self):
_config = self.get_global('PRIVATE_CONFIG', dict({}), True)
_usuario = self.get_global("USUARIO")
_registros = self.get_global("registros", None, True)
_factor = int(_config['FPSSWD'])
if self.codificar(_usuario, _factor) in _registros:
if self.codificar(self.get_global("PASSWORD"), _factor) == _registros[self.codificar(_usuario, _factor)]:
del self.page().session_state["USUARIO"]
del self.page().session_state["PASSWORD"]
self.set_global('hf_key', _config['HUGGINGFACE_KEY'])
self.set_global('logged_in', True)
else:
self.logout("😕 Ups! Contraseña Incorrecta")
else:
self.logout("😕 Ups! Nombre de Usuario Incorrecto")
def logout(self, mensaje=str("¡Vuelva Pronto!")):
self.page().sidebar.error(mensaje)
self.set_global('hf_key')
self.set_global('logged_in')
@staticmethod
def codificar(palabra=str(), modificador=None):
# Acepta:
# ABCDEFGHIJKLMNOPQRSTUVWXYZ
# abcdefghijklmnopqrstuvwxyz
# 1234567890!#$-_=%&/()*[]
codigo = str()
try:
for _byte in bytearray(palabra.strip(), 'utf-8'):
# x = f(y) => la variable 'x' estará en función de la variable 'y'
# Si ... f(y) = y² * k => donde:
# x es el valor decimal del input en bytes
# modificador es un número real variable, definido por el usuario
_y = int(format(_byte, 'b'), 2)
_x = int(pow(_y, 2) * modificador)
# magia
codigo = f" {bin(_x)}{codigo}"
except Exception as error:
print(f"Error Codificando:\n{error}")
return codigo.strip()
@staticmethod
def decodificar(codigo=str(), modificador=None):
# SOLO DECODIFICA SU ECUACIÓN INVERSA...
palabra = str()
try:
for _byte_str in codigo.strip().split(' '):
# entonces...podemos decir que y = √(x/k)
# es su ecuación inversa correspondiente
_x = int(_byte_str, 2)
_y = int(pow((_x/modificador), 1/2))
letra = _y.to_bytes(_y.bit_length(), 'big').decode()
# magia
palabra = f"{letra}{palabra}"
except Exception as error:
print(f"Error Decodificando:\n{error}")
return palabra.stip()
|