Spaces:
Running
Running
import gradio as gr | |
import requests | |
from bs4 import BeautifulSoup | |
from google_img_source_search import ReverseImageSearcher | |
from PIL import Image | |
import os | |
import uuid | |
uid=uuid.uuid4() | |
size_js=""" | |
function imgSize(){ | |
var myImg = document.getElementsByClassName("my_im"); | |
var realWidth = myImg.naturalWidth; | |
var realHeight = myImg.naturalHeight; | |
alert("Original width=" + realWidth + ", " + "Original height=" + realHeight); | |
}""" | |
def process_files(file): | |
read_file = Image.open(file) | |
read_file.save(f"{uid}-tmp.png") | |
action_input = f"{uid}-tmp.png" | |
out = os.path.abspath(action_input) | |
out_url = f'https://omnibus-reverse-image.hf.space/file={out}' | |
return (out_url) | |
def rev_im(image_url): | |
#image_url = 'https://i.pinimg.com/originals/c4/50/35/c450352ac6ea8645ead206721673e8fb.png' | |
out_list = [] | |
out_im = [] | |
html_out = """""" | |
rev_img_searcher = ReverseImageSearcher() | |
res = rev_img_searcher.search(image_url) | |
count = 0 | |
for search_item in res: | |
count+=1 | |
out_dict={ | |
'Title': f'{search_item.page_title}', | |
'Site': f'{search_item.page_url}', | |
'Img': f'{search_item.image_url}', | |
} | |
print (dir(search_item)) | |
html_out = f"""{html_out} | |
<div> | |
Title: {search_item.page_title}<br> | |
Site: <a href='{search_item.page_url}' target='_blank' rel='noopener noreferrer'>{search_item.page_url}</a><br> | |
Img: <a href='{search_item.image_url}' target='_blank' rel='noopener noreferrer'>{search_item.image_url}</a><br> | |
<img class='my_im' src='{search_item.image_url}'><br> | |
</div>""" | |
return (gr.HTML(f'<h1>Total Found: {count}</h1><br>{html_out}')) | |
def find_it(inp): | |
out="" | |
try: | |
#url = f'https://lens.google.com/uploadbyurl?url={inp.strip("")}' | |
url = f'https://tineye.com/search/?url={inp.strip("")}' | |
response = requests.get(url) | |
out=response.text | |
if response.status_code == 200: | |
page_content = response.text | |
soup = BeautifulSoup(page_content, "html.parser") | |
print(soup.prettify()) | |
articles = soup.find_all("article") | |
out = soup.prettify | |
print (articles) | |
except Exception as e: | |
out = e | |
print (e) | |
return (out) | |
#https://lens.google.com/uploadbyurl?url= | |
#https://tineye.com/search/?url= | |
#https://yandex.com/images/search?cbir_id=4330355%2FBhPd4CHqib3nxk9xOdS9pQ7899&rpt=imageview&url= | |
with gr.Blocks() as app: | |
with gr.Row(): | |
with gr.Column(): | |
inp_url=gr.Textbox(label="Image URL") | |
go_btn=gr.Button() | |
inp_im=gr.Image(type='filepath') | |
with gr.Row(): | |
html_out = gr.HTML("""""") | |
inp_im.change(process_files,inp_im,[inp_url]) | |
go_btn.click(rev_im,inp_url,[html_out]) | |
app.launch() |