VKTPL_IMAGE / app.py
shashank1341's picture
Update app.py
cdf3422 verified
import gradio as gr
import pandas as pd
import cloudinary
import cloudinary.uploader
from datetime import datetime
import uuid
from io import BytesIO
from PIL import Image
# Load Excel codes
df = pd.read_excel("RMSheet1.xlsx")
CODES = df["Row Labels"].dropna().astype(str).tolist()
# Cloudinary config (change this to your keys)
cloudinary.config(
cloud_name="diih3ajsp", # ← Replace
api_key="174463748698396", # ← Replace
api_secret="Py_vc_NwOSmdmMKUL5M2n2h_TNk" # ← Replace
)
def upload_to_cloudinary(img, code):
if img is None or code is None:
return "❗ Upload image and select code"
# Generate filename
filename = f"{code}_{datetime.now().strftime('%Y%m%d_%H%M%S')}_{uuid.uuid4().hex[:6]}.jpg"
# Save image to buffer
buffer = BytesIO()
img.save(buffer, format="JPEG")
buffer.seek(0)
# Upload to Cloudinary
result = cloudinary.uploader.upload(buffer, public_id=filename, folder="multiuser_uploads", resource_type="image")
return f"βœ… Uploaded: [View Image]({result['secure_url']})"
# Gradio UI
gr.Interface(
fn=upload_to_cloudinary,
inputs=[
gr.Image(type="pil", label="Capture or Upload Image"),
gr.Dropdown(choices=CODES, label="Select from column: #code")
],
outputs="markdown",
title="Cloudinary Image Logger"
).launch()
# Gradio UI with searchable dropdown
gr.Interface(
fn=upload_to_cloudinary,
inputs=[
gr.Image(type="pil", label="Capture or Upload Image"),
gr.Dropdown(choices=CODES, label="Select from column: #code", filterable=True)
],
outputs="markdown",
title="Cloudinary Image Logger"
).launch()