Dwi-Jesika4S's picture
Upload app.py
16d155a verified
# import mysql.connector
# import gradio as gr
# # Koneksi ke database MySQL
# conn = mysql.connector.connect(
# host="localhost",
# user="root",
# password="", # kosong karena kamu nggak pakai password
# database="kain_gringsing"
# )
# def search_motif(keyword):
# cursor = conn.cursor()
# query = "SELECT nama_motif, gambar, makna, sejarah, kegunaan FROM motif WHERE nama_motif LIKE %s"
# cursor.execute(query, ('%' + keyword + '%',))
# result = cursor.fetchone()
# if result:
# nama_motif, gambar_url, makna, sejarah, kegunaan = result
# return (
# f"**Nama Motif:** {nama_motif}\n\n"
# f"**Makna:** {makna}\n\n"
# f"**Sejarah:** {sejarah}\n\n"
# f"**Kegunaan:** {kegunaan}\n\n",
# gambar_url
# )
# else:
# return "Motif tidak ditemukan.", None
# # Komponen Gradio
# input_text = gr.Textbox(label="Cari Nama Motif")
# output_text = gr.Markdown()
# output_image = gr.Image(type="pil", label="Gambar Motif")
# gr.Interface(
# fn=search_motif,
# inputs=input_text,
# outputs=[output_text, output_image],
# title="Pencarian Motif Kain Gringsing"
# ).launch()
# import mysql.connector
# import gradio as gr
# def get_motif_list():
# conn = mysql.connector.connect(
# host='localhost',
# user='root',
# password='',
# database='kain_gringsing'
# )
# cursor = conn.cursor()
# cursor.execute("SELECT nama_motif FROM motif ORDER BY nama_motif")
# data = cursor.fetchall()
# conn.close()
# return [row[0] for row in data]
# def search_motif(nama_motif):
# conn = mysql.connector.connect(
# host='localhost',
# user='root',
# password='',
# database='kain_gringsing'
# )
# cursor = conn.cursor(dictionary=True)
# # Ambil data motif berdasarkan nama_motif yang dipilih (case insensitive)
# query = "SELECT * FROM motif WHERE LOWER(nama_motif) = %s"
# cursor.execute(query, (nama_motif.lower(),))
# motif = cursor.fetchone()
# if not motif:
# conn.close()
# return None, "Motif tidak ditemukan", "", ""
# # Ambil proses
# cursor.execute("SELECT proses_pembuatan FROM proses WHERE id_motif = %s", (motif["id_motif"],))
# proses = cursor.fetchone()
# # Ambil sumber
# cursor.execute("SELECT nama_narasumber, tanggal_wawancara FROM sumber WHERE id_motif = %s", (motif["id_motif"],))
# sumber = cursor.fetchone()
# conn.close()
# info = f"""**Makna:** {motif['makna']}\n\n**Sejarah:** {motif['sejarah']}\n\n**Kegunaan:** {motif['kegunaan']}"""
# proses_text = proses['proses_pembuatan'] if proses else "Data proses tidak ditemukan"
# sumber_text = f"{sumber['nama_narasumber']} ({sumber['tanggal_wawancara']})" if sumber else "Data narasumber tidak ditemukan"
# return motif['gambar'], info, proses_text, sumber_text
# motif_list = get_motif_list()
# with gr.Blocks() as demo:
# gr.Markdown("#Cari Motif Kain Gringsing")
# with gr.Row():
# dropdown_motif = gr.Dropdown(choices=motif_list, label="Pilih Nama Motif")
# button_cari = gr.Button("Cari")
# gambar = gr.Image(label="Gambar Motif")
# info_motif = gr.Markdown()
# with gr.Accordion("Teknik Pembuatan"):
# markdown_proses = gr.Markdown()
# with gr.Accordion("Sumber Informasi"):
# markdown_sumber = gr.Markdown()
# button_cari.click(
# fn=search_motif,
# inputs=[dropdown_motif],
# outputs=[gambar, info_motif, markdown_proses, markdown_sumber]
# )
# demo.launch()
# import gradio as gr
# import pandas as pd
# # Load CSV
# df = pd.read_csv("motif_kain_gringsing.csv")
# # List nama motif saja
# motif_list = df["nama_motif"].tolist()
# # Fungsi untuk menampilkan detail setelah diklik
# def tampilkan_detail(nama_motif):
# row = df[df["nama_motif"] == nama_motif].iloc[0]
# return (
# row["gambar"],
# f"""
# ### {row['nama_motif']}
# **Makna**: {row['makna']}
# **Elemen Motif**: {row['gambar_dalam_motif']}
# **Kegunaan**: {row['kegunaan']}
# """
# )
# # UI
# with gr.Blocks(css="""
# .gradio-container {
# font-family: 'Segoe UI', sans-serif;
# background: #fffdf8;
# padding: 20px;
# }
# h1 { text-align: center; color: #6e0000; }
# """) as demo:
# gr.Markdown("#MOTIF KAIN GRINGSING")
# gr.Markdown("Pilih nama motif di bawah untuk melihat detail gambarnya dan filosofinya.\n")
# dropdown = gr.Dropdown(choices=motif_list, label="Pilih Motif", interactive=True)
# image_output = gr.Image()
# detail_output = gr.Markdown()
# dropdown.change(fn=tampilkan_detail, inputs=dropdown, outputs=[image_output, detail_output])
# demo.launch(share=True)
import gradio as gr
import pandas as pd
# Load CSV
df = pd.read_csv("motif_kain_gringsing.csv")
# List nama motif saja
motif_list = df["nama_motif"].tolist()
# Fungsi untuk menampilkan detail setelah diklik (pakai collapsible)
def tampilkan_detail(nama_motif):
row = df[df["nama_motif"] == nama_motif].iloc[0]
return (
row["gambar"],
f"""
### {row['nama_motif']}
<details>
<summary><strong>Makna</strong></summary>
<p>{row['makna']}</p>
</details>
<details>
<summary><strong>Elemen Motif</strong></summary>
<p>{row['gambar_dalam_motif']}</p>
</details>
<details>
<summary><strong>Kegunaan</strong></summary>
<p>{row['kegunaan']}</p>
</details>
"""
)
# UI
with gr.Blocks(css="""
.gradio-container {
font-family: 'Segoe UI', sans-serif;
background: #fffdf8;
padding: 20px;
}
h1 { text-align: center; color: #6e0000; }
summary {
cursor: pointer;
font-size: 16px;
margin: 10px 0;
color: #6e0000;
}
details p {
margin-left: 20px;
margin-bottom: 10px;
}
""") as demo:
gr.Markdown("""
<h1 style='text-align: center; color: #6e0000; font-family: Georgia, serif; font-size: 40px;'>
MOTIF PADA KAIN GRINGSING
</h1>
<hr style='border-top: 3px double #6e0000; width: 60%; margin: auto; margin-top: -10px; margin-bottom: 20px;' />
""")
gr.Markdown("Pilih nama motif di bawah untuk melihat detail gambarnya dan filosofinya.\n")
dropdown = gr.Dropdown(choices=motif_list, label="Pilih Motif", interactive=True)
image_output = gr.Image()
detail_output = gr.Markdown()
dropdown.change(fn=tampilkan_detail, inputs=dropdown, outputs=[image_output, detail_output])
demo.launch(share=True)