| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import gradio as gr
- import json
- import os
- import pandas as pd
- from utils import Service, load_image_from_url
- # 手动设置 Gradio 临时目录
- os.environ["GRADIO_TEMP_DIR"] = "/home/yangzeyu/gradio_temp/brand"
- GRADIO_TEMP_DIR = os.environ["GRADIO_TEMP_DIR"]
- brand_list = Service.get_brand_list()
- init_product_list, init_product = Service.get_init_state_product_list(brand_list[0])
- with gr.Blocks() as demo:
- gr.Markdown("## 侵权识别系统", elem_id="header")
- selected_product = gr.State(value=init_product)
- with gr.Row():
- with gr.Column(): # 左侧控制面板
-
- brand_dropdown = gr.Dropdown(
- brand_list,
- label="品牌选择",
- value=brand_list[0],
- interactive=True)
-
- product_dropdown = gr.Dropdown(
- init_product_list,
- value=init_product.title,
- label="商品列表",
- interactive=True
- )
-
- check_button = gr.Button("查询侵权")
- infringement_result = gr.Textbox(
- label="侵权识别结果",
- interactive=False,
- lines=3
- )
-
- with gr.Column(): # 右侧展示面板
- product_info = gr.Dataframe(
- headers=["", ""],
- row_count=5,
- col_count=2,
- value=[
- ["商品链接", init_product.url],
- ["平台", init_product.platFormName],
- ["商户名称", init_product.shopTitle],
- ["颜色", init_product.colors],
- ["尺寸", init_product.sizes],
- ["价格", init_product.price],
- ],
- interactive=False # 设为True可允许编辑
- )
-
- image_display = gr.Gallery(
- label="商品图片",
- columns=2, # 每行显示2张图片
- height="auto",
- object_fit="contain", # 保持图片比例
- value=[load_image_from_url(image_url) for image_url in init_product.images],
- interactive=False,
- show_share_button=False
- )
-
- # 事件绑定
- brand_dropdown.change(
- fn=Service.on_brand_change,
- inputs=brand_dropdown,
- outputs=product_dropdown
- )
-
- product_dropdown.change(
- fn=Service.on_product_change,
- inputs=[product_dropdown, brand_dropdown],
- outputs=[image_display, product_info, selected_product]
- )
-
- check_button.click(
- Service.infringement_judgement,
- inputs=[brand_dropdown, selected_product],
- outputs=infringement_result
- )
- demo.launch(server_name="0.0.0.0", server_port=7860)
|