Spaces:
Running
Running
import gradio as gr | |
import requests | |
import time | |
import json | |
import os | |
import urllib.parse | |
import re | |
def convert_url_filename(url): | |
def encode_filename(match): | |
full_filename = match.group(1) | |
return urllib.parse.quote(full_filename) | |
new_url = re.sub(r'/([^/]+)$', lambda m: '/' + encode_filename(m), url) | |
return new_url | |
def process_image(image_path): | |
url_image = "https://lalashechka-gfpgan.hf.space/gradio_api/file=" + image_path | |
encoded_url_image = convert_url_filename(url_image) | |
print(encoded_url_image) | |
headers = {"accept": "*/*","accept-language": "en-US,en;q=0.9","cache-control": "no-cache","content-type": "application/json","origin": "https://replicate.com","pragma": "no-cache","priority": "u=1, i","referer": "https://replicate.com/","sec-ch-ua": '"Not;A=Brand";v="24", "Chromium";v="128"',"sec-ch-ua-mobile": "?0","sec-ch-ua-platform": '"Linux"',"sec-fetch-dest": "empty","sec-fetch-mode": "cors","sec-fetch-site": "same-site","user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"} | |
data = {"model": "tencentarc/gfpgan","version": "0fbacf7afc6c144e5be9767cff80f25aff23e52b0708f17e20f9879b2f21516c","input": {"img": encoded_url_image}} | |
result = requests.post("https://homepage.replicate.com/api/prediction", json=data, headers=headers) | |
prediction_id = result.json()['id'] | |
poll_url = f"https://homepage.replicate.com/api/poll?id={prediction_id}" | |
c = 0 | |
while c < 20: | |
time.sleep(1) | |
r = requests.get(poll_url, headers=headers) | |
status = r.json()['status'] | |
if r.json()['status'] == 'succeeded': | |
image_url = r.json()['output'] | |
return image_url | |
else: | |
c += 1 | |
continue | |
css = """ | |
.gradio-container { | |
min-width: 100% !important; | |
} | |
#image_output { | |
height: 500px; | |
} | |
#generate { | |
width: 100%; | |
background: #e253dd !important; | |
border: none; | |
border-radius: 50px; | |
outline: none !important; | |
color: white; | |
} | |
#generate:hover { | |
background: #de6bda !important; | |
outline: none !important; | |
color: #fff; | |
} | |
""" | |
with gr.Blocks(css=css) as demo: | |
with gr.Row(): | |
with gr.Column(): | |
image_input = gr.Image(show_download_button=False, interactive=True, label='Изображение:', elem_id='image_output', type='filepath') | |
text_button = gr.Button("Запустить нейросеть", variant='primary', elem_id="generate") | |
with gr.Column(): | |
image_output= gr.Image(show_download_button=False, interactive=False, label='Результат:', type='filepath') | |
text_button.click(process_image, inputs=image_input, outputs=image_output) | |
demo.queue(default_concurrency_limit=12) | |
demo.launch() |