import gradio as gr
from util import download
import os
from dotenv import load_dotenv
from photo_search import PhotoSearch
from PIL import Image
load_dotenv()
tree_path = download.gdrive(os.getenv('TREE_GDRIVE_ID'), dir='temp')
data_path = download.gdrive(os.getenv('DATA_GDRIVE_ID'), dir='temp')
# tree_path= 'temp/trees-pocari.ann'
# data_path = 'temp/drive_ids_pocari.json'
ai = PhotoSearch(tree_path, data_path)
htmlPref = '
Image Gallery'
def search_photo(image):
try:
found_ids = ai.search(image)
if len(found_ids) == 0:
return '''
Foto Serupa Tidak Ditemukan, Tips:
- Gunakan foto terupdate,
- Jika kamu punya foto saat lari, lebih baik gunakan foto itu,
- Jangan menggunakan foto blur,
- Jangan upload foto yang menggunakan aksesoris yang tidak kamu gunakan saat lari (semisal kacamata)
'''
# result = f"{len(found_ids)} foto kamu berhasil ditemukan!"
link_format = [f'
' for i, link in enumerate(found_ids)]
return htmlPref + f'''
{len(found_ids)} Foto Ditemukan!
Klik foto untuk memperbesar atau download
{"".join(link_format)}
'''
except Exception as e:
result = f"Gagal: {e}"
return result
gr_inputs = [
gr.Image(type='pil')
]
gallery = gr.Gallery(
label="Generated images", show_label=False, elem_id="gallery"
).style(columns=[2], rows=[2], object_fit="contain", height="auto")
gr.Markdown('Upload Foto Wajah Kamu Ya (Pastikan hanya terdapat SATU wajah pada foto yang kamu upload)')
iface = gr.Interface(fn=search_photo, inputs=gr_inputs, outputs="html")
iface.launch()