FaceSwappa / app.py
theFisher86's picture
Update app.py
0f347be verified
import gradio as gr
import requests
import os
#import json
def faceSwap(file1, file2):
# Process the uploaded files (e.g., read content, perform calculations, etc.)
# Replace the following lines with your actual processing logic
#file1_content = file1.read().decode("utf-8")
#file2_content = file2.read().decode("utf-8")
#result = f"File 1 content:\n{file1_content}\n\nFile 2 content:\n{file2_content}"
#result = "It worked"
#FaceSwap Stuff
url = "https://api.prodia.com/v1/faceswap"
api_key=os.getenv("PRODIA_API_KEY")
payload = {
"sourceUrl": f"https://thefisher86-faceswappa.hf.space/file={file1}",
"targetUrl": f"https://thefisher86-faceswappa.hf.space/file={file2}"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-Prodia-Key": api_key
}
print(url)
print(payload)
print(headers)
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
jobNumber = response.json().get("job")
print(f"Job created with ID: {jobNumber}")
urlBase = "https://api.prodia.com/v1/job/"
headers = {"accept": "application/json", "content-type": "application/json", "X-Prodia-Key": api_key}
jobResponse = requests.get(urlBase + jobNumber, headers=headers)
print(f"JobResponse Value: {jobResponse}")
print(f"Job Status Code: {jobResponse.status_code}")
genStatus = jobResponse.json()
print(f"Status: {genStatus}")
result = f"https://images.prodia.xyz/{jobNumber}.png"
#result = "yay"
else:
print(f"Couldn't create job. {response.status_code}")
result = "fuck"
return result
# Create a Gradio interface with two file upload components
iface = gr.Interface(
fn=faceSwap,
inputs=[
# gr.inputs.File(label="Upload File 1"),
# gr.inputs.File(label="Upload File 2")
gr.Image(label="Face File", value="FaceFile", interactive=True, show_share_button=True, container=True, type='filepath', sources=('upload', 'webcam', 'clipboard')),
gr.Image(label="Body File", value="BodyFile", interactive=True, show_share_button=True, container=True, type='filepath', sources=('upload', 'webcam', 'clipboard'))
],
outputs=[
gr.Textbox(label="Result")
#gr.Image(type="pil", show_download_button=True)
],
#gr.Textbox(label="Job Number", placeholder="will fill in when job number received", interactive=False),
title="File Upload Interface",
description="Upload two files and process them."
)
# Launch the Gradio interface
iface.launch()