coder
primer_commit
9cc66e2
raw
history blame
5.37 kB
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()