import gradio as gr import requests import yt_dlp import cv2 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 goog(inp): out = requests.get(https://serpapi.com/search.html?engine=google&q=data%3Aimage%2Fjpeg%3Bbase64%2C%2F9j%2F4AAQSkZJRgABAQAAAQABAAD%2F2wCEAAoHCBUUEhgVFBUZGRgYFR0ZFRwYGhweHBoaHxwZGhwYHBocIC4lJR4rIxwaJzsrLDExNTU1ISQ7QDs0QjA0NTEBDAwMEA8QHBISHj0rJSs0NDY9NDQ9ND80NDQ0NDQ2NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NP%2FAABEIALcBEwMBIgACEQEDEQH%2FxAAcAAEAAgMBAQEAAAAAAAAAAAAABQYDBAcBAgj%2FxAA5EAACAQIFAgQEBAUEAgMAAAABAgADEQQFEiExQVEGImFxEzKBkUKhsfAUI1LB0Qdi4fGSohYzgv%2FEABgBAQEBAQEAAAAAAAAAAAAAAAABAgME%2F8QAIREBAQACAgMAAgMAAAAAAAAAAAECERIhAzFBE1EicYH%2F2gAMAwEAAhEDEQA%2FAOzREQEREBERAREQEREBERAREQPImtjcYtJdTfQTBg81SodPyt0B6%2Bxk3N6XV1tIxESoREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQKt4qraalO%2FFifsRvNTEkadXt9PUR48Ol6DXtfUv6H%2FM1KTmpTNnBsLkW3%2Fz%2BU52b27Y3UlWfIsx%2BKulj5l6%2FwBQ7%2B8l5zjKswKOlrlgx4vuD6c2l%2FwuKWoupTcXse4I5BHQy43fVTy4cbuemzERNuRERAREQEREBERAREQEREBERAREQEREBERAREQEREBETGaijlh9xAyRPAZ7ARE0czzOlh011nCjp3PoB1gVj%2FUl9NGk9vlqH9OJU8tz74QcLvqsF0kACw6W636%2Bk2fFXihcU3w1cKikDSQSxYhHDEi4BtYAep3MjMsqKhLLTVmG4Nr78cjptOGWVmTtjJx7Y8RmOISuD5rtdmNmtY9VNuh%2B32l58F5ytRtDMPiFbHf57WsfcC%2F39JXznVRxo0KVIsSykG2%2B3vz%2Bcjspy5UrGsKzoQboDwDvvcci35fWJlJdtZXeOnZokbkmNFWkDrDsNmI239um1pJTtLvtws09iIlQiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIGOpfSbc2NvfpKhSC1Llvmueb8%2B0uUqufZeyP8VPlY%2Ba34W7%2Bxmcp9dPHreqj63xqR%2FlvUX%2F2XnsQfymel4prU%2F8A7UVx3TZh7gyPrZpUVgHB033Nukw4%2Bsj02dFAIXcA7ncEA25J25%2F4mZrXTeWNnuJ5fG9AoW0vqBtpGm%2FNuSQLX%2FexlGzzNGxuLZbEIq%2BRgwttygvYje3m6m%2FtPl8sYBqrrp1Hy8XNxa9vv0kdXpURWppXRtLkoCptpLWGoG%2B1jb1ExMrbqpcZPTEKaMhU%2FwAtw6BiPKwp6lDcdr34tt6SSx2Fr4HE03e1TDu6oTb5SbDf%2B02q%2BQNTramdn07gkAhgVZbt2cg6SeDz3vYMlqIpRGAKXAsxJCm4sRq6D6RbBA5g9LC4p9Zd3Zg6UaQLMq72vwBe19zvNtMV8Sg%2BIo0QArFClQ6WUjazjSTc7%2FlIfxJh61HEYpKVYU6j1hVbWqfzKTWKgO24CkFdudO%2B1pMrSb4NV3JX4yUlUMNJYpfU%2Bnou%2BkE82PTcsp9Mbd6ZPC%2BePh3U16TIlVRbR5lFz5Tbnbf7zp04%2FgMZiKlNKWHYAUS7VnceU6mLKi362Pba4nSfDWIqPh1NYAOCQ1hYen5Wm8L8Zzx%2BpiIidHMiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICY6iAggi4IsR6TJEClZ1lGh0AZtLkqLD8VrhT2v395z%2Bo7%2FxCBWsvxAGLGwFjZtXH3%2BonbsTQWopVhcH9RuCPUGc58deHGRfi07FSwDWAFiTa7enqJyyxsvTvj5dzVe53UV6gCtdQgPUqTYmwB2vxveROYJSqUFp44aN70mp6mqk82C2PF9zx3Im3SwzUwgdg7FBqtsDpPUD06zHjsA9ap%2FEOP5D0Goq1PUTSbY67C50nfccWmJeyzUTmV1aFZEw%2BuotZEAQV1Cs%2Bkc7eVjaxIG%2FBtPUwbK3m%2BoI4O%2FbbmVXL%2FDNZ6ehcRr%2BHWNYYhi%2BzaTpRXaxLFjva9he%2FIm1lueVrgV21vrIZrdR7bcfoZjy9TprxTl7ZvFLVDVo1QwVqOwuORcEAsf3vN%2BupxH83EKyr7n0AAt37C53kR4l8QUzSYoocruxtsLdhtcn7f3s1DIT%2FAA9CoCFqaEu1h5LgkuBwz%2BYhbggE3tJjjnce2srjL02aWUUqVMWUBQt1S3QEtcjuSQT7SW8No%2Fwi1S93YtubkA8DbYC0jqdO6tT2G%2FG7Ob%2FiZr%2FN6X2Em8qqoU0o6toJVrG9iuxB3NiCOJ2wne3HO9aSMRE7ORERAREQEREBERAREQEREBERAREQEREBERAREQERNLF5hTpWDMNR4UEX%2B3baBuSIz7G4ZKZXEsuk2uNy3OxAG%2B3N5CZv4qIutLT2O%2B59r8b2nMMxr1XqOzuSL6ieQObD9dpm5T01Mb7TuYYxKhdqFRvlZQzCzKLHkHYHb2My5WmJp4Wi%2BGqa0KAEMwW1rC3mtcde8qFHFGlU%2BG5IRxpqNfzKrXta%2FHQ8Sdq0GJw9Fx%2FKpFjqBshUgBbgc33P195xymnXHtNYXMauJqlCdQpWD2Nxr%2FpuNtvvcTbXCoSqNTXQ7E3LEO%2B%2Bm6IgLkA%2Fi2FzzNrJHw6MfOh6aVVVQX3G306yVqVVZ2KMt%2FxWNme1gFLdF9BOdxl7amVnSCzTwDgqik03q03I3AbUO41q3B37g%2FaT2TYx6lNQaZGlQovbSLWFx6bdplFRPh6ajqoA8wX%2Bni3tITxH45oYRdFEa6lhtbyrfcXPU26fe09GO65VN5hiqa1Fw%2BsLUqKwSx8wYqxB%2FI2vyZEYbONDKigamqlfL1IQfEZuw%2BIHnO6WYVqlUVmN6usOlz8pDagSfW1gP0F5eqlegjVK4Gku7ML8jUxb6ExnZjNQxx37TmJ8UfAqIrjUGIDaRdhe9jtLUjXAPcT8%2FVcyqYjFoirqAawHH11dp3fKiTRTVzpsd7%2FnLjb9Zyk%2BN2IibZIiICIiAiIgIiICIiAiIgIiICIiAiIgJjq1FUFmNgOSZ5VqBFLMbBQSSegE5p4u8RV3OmiCFY2WwvpFrlj%2FALiCPaS3Sybbvi7xPXK6cKCFU%2Bci2ore3J4H5yITMlYMiN50Qs9wT57Ak%2B4vK9l2NenWZ64LNV2RX2AUH5iON7SWzGqlArVQ71BpRALAi4JJIN97k%2Bpt2meVa4xE1UqWNr6n9BfSArax37duZ8Ypgp2N1Vd7EEEi3Pf8P1vNeljXcVH03bZAoHF%2FS%2F1v3mnVwwp6wTf5Rv0J3Ive9%2F2bTGm9tWlhi9TzdTduevXfmW2jmlVEXQA9PfUCtwvoTwB12H9pCfwuiotyPNb1t%2BKx95IYLMWpGyAsj31qx31C%2FmA4O1z%2FAPmL2JvCZ%2FQ1AGmgKm1wtrbEsbAc2BO3Yd5v4jP6QDfC0AgWBv1IZie2%2BkH2lco4XDMoZX0MANNweTY3Pa9hf0%2FOPq5BQQ6nxI0lkNlBY%2BRXQA%2BpH7EnE5NjOM41jV8Y2O1lGkPtY73J07%2FsbzZzXDpiMuoYinWpH%2BFpMKi33BYU77W%2BYaODzfmQ%2FwD8Vw%2FLVqrIDcArp24BuxA47TZp%2BGcIFLhXYAc%2FNvsbHST0v7faXH%2BN2XtVaWebglCw6joSevv%2B9pP0sacSNCvoXjS6XKb%2FAISP89pcsvwOGHlVUsANja56gH1IPvxLRgqNIEEKqmwsbDfpz9x9pLZbtZuRT%2FCPg8UX%2BI7BjyNN7d777zqWVVAVKjpv95XcY7K5CJYAXv0H0H%2Fc28ixqiroZru4JUC52XknbYS45fyZynSzxETs5EREBERAREQEREBERAREQEREBERAREQK348rFcDUt1sD7cn9JzfNM1eiyIqXJpB9RBvqY24HXp9BOi%2BPXtg2PO%2Fy9WHUAdSBcyj5TiEqVaruLhNDUyW6FQQLX6sAZjJrFq%2BI8M70VqMtqjqlIKRa1yTffjoTIxcE7Yxabg6aNJNOw4te44H7%2BkmMNmb1KWG%2BOjMXruEK9LbAm%2FW1z7C82K2Z4Z8WyAkVChTi21jYA3%2FLvM9xphp4IUDWruwAIuhHTbe9ulx03%2Bkp2GZ6lQvbUNYa4BFxbTcC1vvxLomX1UwboSXIY9LHTe4BLcWv6%2B0%2Bcoy5Ph3sAB5it9Wkn%2Fbzfm2%2FW0zvSqvmb1GZ9S6NBDAi99NrEX4B%2FuPpNzDgOquikOi6fNYq%2FU889u95hzCs1Ou5e%2BhtgOgFvfc9%2FczRLsjIo4ALKNiPY9Lb%2FvmFSNOkjq5BKlqwLG5ABGrYDt%2Bpm3halH4hVajBzYgIga5A3A25sT16zQyrRUqOtUaXcKVQ2ZL%2FADayLgbW69t5LAcUUxSEtfUAg1nnjQQAPp22liVkxOBRvPoBsblX1ajbsCbW3%2F6mH4tM2VVNOpfhbBgL23QbEd%2F%2BJgXwzilYlcQqIdwCGZufVht9f7mQ2bUXFUAVzrUWBFMgf%2BZNuh24ixZV3bCXXcKG5JXa55Fx9SZtZLmqOWpXGtNvLuAbCwP9Jt%2Bhtec2wOU4yrUCO726kMbj2N%2Bfe%2FSXrA4H%2BERTSuGuNRa5Y99XPe95zysjU3Vmo1AiB8Q4Ww%2BW12Pbj06AT3CYymcWrJbWRptxZL3ZmsL%2FAH2vK5neZIqa3IJ%2FDqO1%2FwCr0kN4XonFlmd3SgrWIVtLViNyWcm4UdAPe%2Fa41LHcZ7IjJM3w9ZNNCor%2FAA7IdB1AED5dXF7esl56JduFmnsREoREQEREBERAREQEREBERAREQERECteJqjA8hV07Mfwk3ufyAnLsidWsQ6EVBZmU%2FiR7nyg9fOfYidmzTL6ddNFVVdOqsLiRdHw1hUFkw9JOxSmoI9iBeY%2FH3btrn1JpSM3rDD1MLTVboBzsQfXnmx2kL4wwxo4yniVI0v8ANcHpzew3%2FOWnxX4YrNoegLmmdrHzFb3tv2mvmtEfwTnELeyXAc2IO%2B9uh9JLLFljB4hzvRhNQViW2DEXF%2Bd7n1kZ4SxTvQfycrcn8R5F7WsR2O%2FX6spy34%2BCVC6EfMoI2C9rje9vabWRVkFU0aOllA81iAAb23vzz%2B9pNNbRC4V6g%2FmIy6W2Ym4PJudt%2B305ldNZxUZFII3BuQft%2Bk6B4vxpSiShCs%2Bw9T2Hrv0lBp4FUXks5IUkG253ax9BeSQqZyTC%2FGRVq3V9ZvovcqAuwO4BPc%2F7gJJZtmGFwK2WysV2RFDM2%2F42PH5THTwWISmfhOqaxquei8Cwtcm3X1mvgfCVJG%2BLiH%2BIdyxewQfnfr3mvjKvYnxNia%2FloJpXoB5m24H58W6z3A4XHF9TXb0c7dD2Ntr9JO5j4pw9LyUwXtzpUBQRt821%2BOncyOwOf4uu96SNp66dKqPdyvH77SX16X%2FVly3Eh1ZHU02RfkPmDg23v9hNl8WEpknZVFhNVcezEvinpUgFt5AS1tr6ixAJuei3%2B8wZuuCqYcu1eoqX8oKWLHiwW4JN%2B9h%2Bs5XHddJl0p2bZjUxVTQt9N9yOCv1mTOs8anSXC0W0qB5yp%2F9QR%2BfeWIZBhUwgd67UwyklVQs5Xtsfv8ASfeG8M5dQanUxFUnW38tNz2N262FuO9%2FYblxZsq0eFsY2Hy%2FDqigO4Gxvtfck2BJPHv6dLVhc3qKfO6MeoO30AFyPqTILG4%2BgqKaRGuwWmpGk3J0gWPHWamIoBAVpWNV2O6kF9R5sfScpnlK3wljoeDzFKlgDZuqts32O83ZzGg2IQKrMQyjYuoZif6iTv8Aa39pPZZnVVUUOS%2FclWuT6AdPWd55J9crh%2BlwiR1HMww%2BVh7i36zI2YoOb%2B9tvvN8ozxreiY0cMLgzJNMkREBERAREQEREBERAREQPk8TWtNuYHSWDGRMWIwiOul0Vx2ZQR9jM9olRHpk9BRZaSKLWsoCi3awkWnhijRqPWpKVZlOpRuD6gd9uksdok1F25FmWBdqhqVNaMzEKSt7KDtsdh04F5BMKauQ%2BnZT5kLamBudKJva4vdzbrbnbu1WirCzKD7iUbxD4cNN3rppCBCbLq1htrmw2IsDMcdNTJT8PVAp%2FFxBK22ppwEUbKtv6rAcde0gMbiq%2BOqClT1JT7dx3c9fqYzes%2BIrJSQMBf8AEe9u8seT0UpAgG7cG3J2ta1unf8AzYRUPlvg0Kyl2Delttvw34PW%2FH94z%2FPBQHw6W3l4tsD6eg9uvpLNjMdppsxUEKvl7aj0%2FwCf8bUjKsu%2FicR5t%2BSbe%2FJ%2B%2FwCnvJ77q%2F01MmwVTFVQzk6AQTfjpfb%2B0t2MyRa9VLL5EA3G67XsoI9AN7WO%2FYW1c7qJhglBDY769PzgX4vtud%2FtvLGtZKGHUsAq6OCd%2B1j6nb9O0xlb7akUPxVjmaqaSMbCwsLi%2FwA25APpx7GTr4AtRpNX1jQx8tyS19GlQPqb%2FXbqI%2FKMJ%2FE1WrhL2cWHrcX34%2FF%2Bstua4caEd2OmmNRC76nGkqLn1I45t9mXyE%2FbWzBmWpQ0kHXURWsDsFFxv1t335vttNfHPVfECmpYIh1M9zdmPCDoVFrkdpuohFMVnW2x0J1UEat%2FXp326dPFcIpqMdRcroAtZSSOLb7t99phUUmYVamZXDMfhpocki1iDsSOlgD9DeSnhvO62h21sR8RlQG%2Fyg%2BVVDbCwtxzaYcvoopdVZnbWxcjkA7qvsBYd%2BJlfDkAKTcL5gbAWHG1jsANvrzzJlVkTuGzyqT5gTt5iRYe9uLfu0YnxG42UAdrX%2BhNpXv4ao3l1EdBcm556n6TJRyesh1itr07lXHHJNnG%2B3Yg9Zz7%2Fbp0ufhvPma%2FxAw9beX1F5ckcMARuDxOaZdi1dbpYEGx9%2BDcfT9ZcvDVZijhiSqkaCexFyPpO3hz741y8uHXJOxPJ7PS4EREBERAREQEREBERATwiexAwlbT5tM8%2BGSXYxxaIlQnxUphgQRcHkT7i0CtYjwVg2fWKehjyUZlvfuL2mng%2FwDT%2FD0mZkqVPNzqKm3t5RLjaAJNRdqbmXggVUKrWKk8EoDbvtffaaWRf6enDMWXEXJG%2Fkt1vzqMv9otJxhyqjYzwErVVqrUCOOvww1z3IY8zLnngs4mmEeqLrwxS%2F5XtaXS09tJxxXlVDyXwRUoXDVlKkWCqmkD2t3m6fCbXJLht7qDe3Ft%2FX9%2Bst1p7JfHjVmVikYnwzXZbApyL3JsRYg%2FrtPG8MVT8yodt7sTvckEbbW2sJd7RaT8eK865k3hTHI7NTFJtRBYkkEgXG%2B3I%2FufSYsRl2PUnVhg55BV1twO%2FwBfvOpWi0v48U%2FJk5dhsDiyRqwzrtvcqf0b2m3QwWKvY0ntfr27frOjWnmmYvhxa%2FLk5hlPhPFCs9RwEDuzWDA2v0tx0E6Xl2HCUwo2tMmmfdOaxwxxu4zc7ZpliIE2y9iIgIiICIiAiIgIiICIiAnhiIHwyzHESj2IiVCIiAiIkCexEDyLRED0LGmIhTTGmIgNM8tEQAEyKIiB9T2IkCIiAiIgf%2F%2FZ&location=Austin%2C+Texas%2C+United+States&google_domain=google.com&gl=us&hl=en) print (out) def dl(inp): out = None out_file=[] try: inp_out=inp.replace("https://","") inp_out=inp_out.replace("/","_").replace(".","_").replace("=","_").replace("?","_") os.system(f'yt-dlp "{inp}" --trim-filenames 160 -o "{inp_out}.mp4" -S res,mp4 --recode mp4') out = f"{inp_out}.mp4" #out_ap = os.path.abspath(out_f) #out = f'https://omnibus-reverse-image.hf.space/file={out_ap}' print (out) except Exception as e: print (e) #out = f'{e}' return out def process_vid(file): new_video_in = str(file) capture = cv2.VideoCapture(new_video_in) frame_count = int(capture.get(cv2.CAP_PROP_FRAME_COUNT)) rev_img_searcher = ReverseImageSearcher() html_out="" try: for i in range(frame_count-1): print(i) capture.set(cv2.CAP_PROP_POS_FRAMES, i) ret, frame_f = capture.read(i) cv2.imwrite(f"{uid}-vid_tmp{i}.png", frame_f) out = os.path.abspath(f"{uid}-vid_tmp{i}.png") out_url = f'https://omnibus-reverse-image.hf.space/file={out}' print(out) res = rev_img_searcher.search(out_url) #print (res) if len(res) > 0: count = 0 for search_item in res: print (f'counting {count}') 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}
Title: {search_item.page_title}
Site: {search_item.page_url}
Img: {search_item.image_url}

""" return (gr.HTML(f'

Total Found: {count}


{html_out}')) else: pass except Exception as e: return (gr.HTML(f'{e}')) return (gr.HTML('No frame matches found.')) def process_im(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}
Title: {search_item.page_title}
Site: {search_item.page_url}
Img: {search_item.image_url}

""" return (gr.HTML(f'

Total Found: {count}


{html_out}')) def shuf(tog): if tog == "URL": return gr.update(visible=True),gr.update(visible=False),gr.update(visible=False) if tog == "Image": return gr.update(visible=False),gr.update(visible=True),gr.update(visible=False) if tog == "Video": return gr.update(visible=False),gr.update(visible=False),gr.update(visible=True) with gr.Blocks() as app: with gr.Row(): gr.Column() with gr.Column(): source_tog=gr.Radio(choices=["URL","Image","Video"],value="URL") with gr.Box(visible=True) as url_box: inp_url=gr.Textbox(label="Image URL") go_btn_url=gr.Button() with gr.Box(visible=False) as im_box: inp_im=gr.Image(label="Search Image",type='filepath') go_btn_im=gr.Button() with gr.Box(visible=False) as vid_box: vid_url=gr.Textbox(label="Video URL") vid_url_btn=gr.Button("Load URL") inp_vid=gr.Video(label="Search Video") go_btn_vid=gr.Button() gr.Column() #paste_clip = gr.Button("Paste from Clipboard") with gr.Row(): html_out = gr.HTML("""""") vid_url_btn.click(dl,vid_url,inp_vid) source_tog.change(shuf,[source_tog],[url_box,im_box,vid_box]).then(goog,None,None) inp_im.change(process_im,inp_im,[inp_url]) go_btn_vid.click(process_vid,inp_vid,[html_out]) go_btn_im.click(rev_im,inp_url,[html_out]) go_btn_url.click(rev_im,inp_url,[html_out]) app.launch()