Update app.py
Browse files
app.py
CHANGED
|
@@ -77,10 +77,6 @@ unlu_verileri = klasordeki_unluleri_getir()
|
|
| 77 |
# --- ARAYÜZ AYARLARI ---
|
| 78 |
st.set_page_config(page_title="CastMatch AI", layout="wide")
|
| 79 |
|
| 80 |
-
# --- SESSION STATE (SENKRONİZASYON İÇİN) ---
|
| 81 |
-
if 'shared_selected_actor' not in st.session_state:
|
| 82 |
-
st.session_state.shared_selected_actor = None
|
| 83 |
-
|
| 84 |
# --- SOL PANEL (SIDEBAR) ---
|
| 85 |
st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
|
| 86 |
st.sidebar.markdown("---")
|
|
@@ -92,16 +88,14 @@ gender_choice = st.sidebar.radio(
|
|
| 92 |
|
| 93 |
filtered_names = [name for name, data in unlu_verileri.items() if data['c'] == gender_choice]
|
| 94 |
|
| 95 |
-
# Kategori değişince ilk ismi seçili yap (Hata önleme)
|
| 96 |
-
if st.session_state.shared_selected_actor not in filtered_names and filtered_names:
|
| 97 |
-
st.session_state.shared_selected_actor = filtered_names[0]
|
| 98 |
-
|
| 99 |
st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
|
| 100 |
|
| 101 |
-
#
|
| 102 |
-
|
| 103 |
-
|
| 104 |
-
|
|
|
|
|
|
|
| 105 |
|
| 106 |
# --- ANA EKRAN ---
|
| 107 |
st.title("🎬 CastMatch AI: Talent Matching System / Yetenek Eşleştirme Sistemi")
|
|
@@ -113,30 +107,26 @@ col_actor, col_match = st.columns([1, 2])
|
|
| 113 |
with col_actor:
|
| 114 |
st.subheader("👤 Pick an Actor / Oyuncu Seç")
|
| 115 |
|
| 116 |
-
#
|
| 117 |
try:
|
| 118 |
-
|
| 119 |
except:
|
| 120 |
-
|
| 121 |
|
| 122 |
-
# SELECTBOX: st.session_state ile index'i zorluyoruz
|
| 123 |
selected_actor = st.selectbox(
|
| 124 |
"Select from list / Listeden seçin:",
|
| 125 |
filtered_names if filtered_names else ["Yok"],
|
| 126 |
-
index=
|
| 127 |
-
key="main_selectbox"
|
| 128 |
)
|
| 129 |
|
| 130 |
-
# Selectbox'dan manuel seçim yapılırsa state'i güncelle
|
| 131 |
-
st.session_state.shared_selected_actor = selected_actor
|
| 132 |
-
|
| 133 |
if selected_actor != "Yok":
|
| 134 |
found_path = None
|
| 135 |
search_target = selected_actor.replace(" ", "_").lower()
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
|
|
|
| 140 |
|
| 141 |
if found_path:
|
| 142 |
st.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
|
|
@@ -166,4 +156,4 @@ with col_match:
|
|
| 166 |
st.error("Model dosyası eksik! / Model file missing!")
|
| 167 |
|
| 168 |
st.markdown("---")
|
| 169 |
-
st.info("💡 **How it works? / Nasıl çalışır?**: This AI analyzes career vectors based on available local assets. / Bu yapay zeka, mevcut yerel varlıklara (resimlere) dayanarak kariyer vektörlerini analiz eder.")
|
|
|
|
| 77 |
# --- ARAYÜZ AYARLARI ---
|
| 78 |
st.set_page_config(page_title="CastMatch AI", layout="wide")
|
| 79 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
# --- SOL PANEL (SIDEBAR) ---
|
| 81 |
st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
|
| 82 |
st.sidebar.markdown("---")
|
|
|
|
| 88 |
|
| 89 |
filtered_names = [name for name, data in unlu_verileri.items() if data['c'] == gender_choice]
|
| 90 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 91 |
st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
|
| 92 |
|
| 93 |
+
# ÇÖZÜM: Sol panelde Radio butonu kullanarak ortak state oluşturuyoruz
|
| 94 |
+
selected_actor_sidebar = st.sidebar.radio(
|
| 95 |
+
"Choose from list / Listeden seçin:",
|
| 96 |
+
filtered_names if filtered_names else ["Yok"],
|
| 97 |
+
label_visibility="collapsed" # Başlığı gizleyip sadece listeyi gösteriyoruz
|
| 98 |
+
)
|
| 99 |
|
| 100 |
# --- ANA EKRAN ---
|
| 101 |
st.title("🎬 CastMatch AI: Talent Matching System / Yetenek Eşleştirme Sistemi")
|
|
|
|
| 107 |
with col_actor:
|
| 108 |
st.subheader("👤 Pick an Actor / Oyuncu Seç")
|
| 109 |
|
| 110 |
+
# Selectbox'ın indexini, sidebar'da seçilen isme göre ayarlıyoruz
|
| 111 |
try:
|
| 112 |
+
current_idx = filtered_names.index(selected_actor_sidebar)
|
| 113 |
except:
|
| 114 |
+
current_idx = 0
|
| 115 |
|
|
|
|
| 116 |
selected_actor = st.selectbox(
|
| 117 |
"Select from list / Listeden seçin:",
|
| 118 |
filtered_names if filtered_names else ["Yok"],
|
| 119 |
+
index=current_idx
|
|
|
|
| 120 |
)
|
| 121 |
|
|
|
|
|
|
|
|
|
|
| 122 |
if selected_actor != "Yok":
|
| 123 |
found_path = None
|
| 124 |
search_target = selected_actor.replace(" ", "_").lower()
|
| 125 |
+
if os.path.exists(resim_klasoru):
|
| 126 |
+
for f in os.listdir(resim_klasoru):
|
| 127 |
+
if f.lower().startswith(search_target) or selected_actor.lower() in f.lower():
|
| 128 |
+
found_path = os.path.join(resim_klasoru, f)
|
| 129 |
+
break
|
| 130 |
|
| 131 |
if found_path:
|
| 132 |
st.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
|
|
|
|
| 156 |
st.error("Model dosyası eksik! / Model file missing!")
|
| 157 |
|
| 158 |
st.markdown("---")
|
| 159 |
+
st.info("💡 **How it works? / Nasıl çalışır?**: This AI analyzes career vectors based on available local assets. / Bu yapay zeka, mevcut yerel varlıklara (resimlere) dayanarak kariyer vektörlerini analiz eder.")
|