Spaces:
Runtime error
Runtime error
File size: 4,279 Bytes
b0afc19 a494deb b0afc19 a494deb b0afc19 5aab889 b0afc19 d7540cc b0afc19 e5fbffb b0afc19 5aab889 e5fbffb b0afc19 fcf99b3 b0afc19 fcf99b3 b0afc19 6b4a66c ef49bfe b0afc19 ef49bfe b0afc19 e97c8c1 b0afc19 ef49bfe b0afc19 d7540cc b0afc19 |
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 |
import gradio as gr
import ast
import requests
#Using Gradio Demos as API - This is Hot!
API_URL_INITIAL = "https://ysharma-playground-ai-exploration.hf.space/run/initial_dataframe"
API_URL_NEXT10 = "https://ysharma-playground-ai-exploration.hf.space/run/next_10_rows"
#Define inference function
#First: Get initial images for the grid display
def get_initial_images():
response = requests.post(API_URL_INITIAL, json={
"data": []
}).json()
response_dict = response['data'][0]
return response_dict
#Second: Process response dictionary to get imges as hyperlinked image tags
def process_response(response_dict):
return [resp[0][:-1] for resp in response_dict["data"]]
response_dict = get_initial_images()
initial = process_response(response_dict)
initial_imgs = '<div style="display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); grid-gap: 0; background-color: #fff; padding: 20px; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);">\n' + "\n".join(initial[:-1])
#Third: Load more images for the grid
def get_next10_images(response_dict, row_count):
row_count = int(row_count)
#Convert the string to a dictionary
if isinstance(response_dict, dict) == False :
response_dict = ast.literal_eval(response_dict)
response = requests.post(API_URL_NEXT10, json={
"data": [response_dict, row_count ] #len(initial)-1
}).json()
row_count+=10
response_dict = response['data'][0]
next_set = [resp[0][:-1] for resp in response_dict["data"]]
next_set_images = '<div style="display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(3, 1fr); grid-gap: 0; background-color: #fff; padding: 20px; box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); ">\n' + "\n".join(next_set[:-1])
return response_dict, row_count, next_set_images #response['data'][0]
#Defining the Blocks layout
with gr.Blocks(css = """#img_search img {width: 100%; height: 100%; object-fit: cover;}""") as demo:
gr.HTML(value="top of page", elem_id="top",visible=False)
gr.HTML("""<div style="text-align: center; max-width: 700px; margin: 0 auto;">
<div
style="
display: inline-flex;
align-items: center;
gap: 0.8rem;
font-size: 1.75rem;
"
>
<h1 style="font-weight: 900; margin-bottom: 7px; margin-top: 5px;">
Streaming PlaygroundAI Images in a grid </h1><br></div>
<div><h4 style="font-weight: 500; margin-bottom: 7px; margin-top: 5px;">
Based on <a href="https://github.com/playgroundai/liked_images" target="_blank">PlaygroundAI Image dataset</a></h4><br>
</div>""")
with gr.Accordion(label="Details about the working:", open=False, elem_id='accordion'):
gr.HTML("""
<p style="margin-bottom: 10px; font-size: 90%"><br>
▶️Do you see the "view api" link located in the footer of this application?
By clicking on this link, a page will open which provides documentation on the REST API that developers can use to query the Interface function / Block events.<br>
▶️In this demo, I am making such an API request to the <a href="https://huggingface.co./spaces/ysharma/Playground_AI_Exploration" target="_blank">Playground_AI_Exploration</a> Space.<br>
▶️I am exposing an API endpoint of this Gradio app as well. This can easily be done by one line of code, just set the api_name parameter of the event listener.
</p></div>""")
with gr.Column(): #(elem_id = "col-container"):
b1 = gr.Button("Load More Images") #.style(full_width=False)
df = gr.Textbox(visible=False,elem_id='dataframe', value=response_dict)
row_count = gr.Number(visible=False, value=19 )
img_search = gr.HTML(label = 'Images from PlaygroundAI dataset', elem_id="img_search",
value=initial_imgs ) #initial[:-1] )
gr.HTML('''<center><a href="https://huggingface.co./spaces/ysharma/Stream_PlaygroundAI_Images?duplicate=true"><img src="https://bit.ly/3gLdBN6" alt="Duplicate Space"></a></center>
</p></div>''')
b1.click(get_next10_images, [df, row_count], [df, row_count, img_search], api_name = "load_playgroundai_images" )
demo.launch(debug=True) |