astro-blendDEV / app.py
Moibe's picture
Test mass
5706b0d
raw
history blame
4.43 kB
import gradio as gr
import time
import os
import pathlib
from PIL import Image
import sulkuPypi
from funciones import mass
def perform(input1, input2):
#Primero que nada, checa cuantos tokens:
tokens = sulkuPypi.getTokens("gAAAAABmEZA4SLBC2YczouOrjIEi9WNCNGOIvyUcqBUnzxNsftXTdy54KaX9x8mAjFkABSI6FJrdZDQKk_5lpJOgJoMChxlniw==")
print(f"Tienes: {tokens} tokens. ")
#Despu茅s autoriza.
#video o cualquier otro ser铆a para imagenes.
modo = "pic"
#local o huggingface
plataforma = "huggingface"
#face_swapper o face_enhancer o la combinaci贸n de ellos.
procesador = "face_swapper"
print(f"Inicio: Estamos en modo {modo}, plataforma: {plataforma} y procesador: {procesador}.")
path_video = input2
print("Path_video es:", path_video)
time.sleep(4)
if modo == "video":
if plataforma == "local":
#Para local.
path_parts = path_video.split("\\")
else:
#Para HuggingFace
#Creo que no va en imagen.
print("La plataforma en la que basaremos la divisi贸n es HuggingFace.")
path_parts = path_video.split("/")
#Aqu铆 obtendremos nom_video
#Creo no va en imagen
filename = path_parts[-1]
nom_video = filename[:-4]
print("Esto es filename alias nom_video: ", nom_video)
path_particular = "/".join(path_parts[0:len(path_parts) - 1])
path_general = "/".join(path_parts[0:len(path_parts) - 2])
path_general = path_general.replace("\\", "/")
path_particular = path_particular.replace("\\", "/")
print("Path general: ", path_general)
print("Path general: ", path_particular)
path = pathlib.Path("result.mp4")
files = os.listdir(path_general)
print("Estos son los files que hay:")
print(files)
ext_imagen = "png"
ext_video = "mp4"
#Selector de modo.
if modo == "video":
print("Se asigno la extensi贸n de video:", ext_video)
extension = ext_video
else:
print("Se asigno la extensi贸n de imagen:", ext_imagen)
extension = ext_imagen
#El source siempre es una imagen.
source_path = "source.png"
target_path = "target." + extension
result_path = "result." + extension
#La primera siempre ser谩 una imagen, por eso no entra en el modo selector.
source_image = Image.fromarray(input1)
print("Esto es source_image: ", source_image)
source_image.save(source_path)
#Aqu铆 trabajaremos solo el target.
if modo == "video":
#Para Video
target_path = input2
else:
#Es decir si es modo imagen
#Para Imagenes
target_image = Image.fromarray(input2)
print("Esto es target_image: ", target_image)
target_image.save(target_path)
print("Despu茅s de los selectores de modo los paths quedaron as铆:")
print("source_path: ", source_path)
print("target_path: ", target_path)
command = f"python run.py -s {source_path} -t {target_path} -o {result_path} --frame-processor {procesador} --execution-provider cuda"
print(command)
time.sleep(1)
proc = os.popen(command)
output = proc.read()
print("Output (resultado de la ejecuci贸n del c贸digo):")
time.sleep(1)
print(output)
print("Termin贸 la impresi贸n del output...")
print("脡ste es el momento en el que se creo result, revisar...")
time.sleep(1)
try:
print("脡sta vez no crearemos archivo zip.")
except Exception as e:
# c贸digo que se ejecutar谩 si se produce la excepci贸n
print(e)
if modo == "video":
#Para video
path = pathlib.Path("result.mp4")
path_abs = os.path.abspath(path)
print("脡ste es el path para video:", path)
print("Y su ruta absoluta es: ", path_abs)
return path
else:
#Para imagen
path = pathlib.Path("result.png")
print("脡ste es el path para imagen:", path)
return path
print("Listo! Gracias!")
#Despu茅s ejecuta la masa.
#path = mass(input1,input2)
print("Despu茅s de mass imprimo 茅sto.")
time.sleep(10)
#Y finalmente debita los tokens.
#As铆 para imagenes
demo = gr.Interface(
fn=perform, inputs=[gr.Image(), gr.Image()], outputs=[gr.Image()]
)
demo.launch()