ESMATUGBA commited on
Commit
e35a399
·
verified ·
1 Parent(s): fe9b124

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -11
app.py CHANGED
@@ -60,9 +60,11 @@ tum_unlu_verileri = {
60
  # --- ARAYÜZ AYARLARI ---
61
  st.set_page_config(page_title="CastMatch AI", layout="wide")
62
 
63
- # TİTREMEYİ ÖNLEYİCİ CACHE FONKSİYONU
64
  @st.cache_data
65
  def get_image_path(actor_name):
 
 
66
  ana_dizin = os.getcwd()
67
  search_term = actor_name.lower().replace(" ", "_")
68
  search_term_plain = actor_name.lower()
@@ -73,7 +75,7 @@ def get_image_path(actor_name):
73
  return os.path.join(ana_dizin, f)
74
  return None
75
 
76
- # --- SOL PANEL (SIDEBAR) ---
77
  st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
78
  st.sidebar.markdown("---")
79
 
@@ -82,8 +84,8 @@ gender_choice = st.sidebar.radio(
82
  ["Male / Erkek", "Female / Kadın"]
83
  )
84
 
 
85
  filtered_names = [name for name, data in tum_unlu_verileri.items() if data['c'] == gender_choice]
86
-
87
  st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
88
  for n in filtered_names:
89
  st.sidebar.write(f"• {n}")
@@ -97,24 +99,33 @@ col_actor, col_match = st.columns([1, 2])
97
 
98
  with col_actor:
99
  st.subheader("👤 Pick an Actor / Oyuncu Seç")
100
- selected_actor = st.selectbox("Select from list / Listeden seçin:", filtered_names if filtered_names else ["Yok"])
101
 
102
- # Resim Alanını Sabitle (Titremeyi Keser)
103
- image_placeholder = st.empty()
 
 
 
104
 
105
- if selected_actor != "Yok":
 
106
  found_path = get_image_path(selected_actor)
107
  if found_path:
108
  image_placeholder.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
109
  else:
110
- image_placeholder.warning(f"⚠️ Resim dosyası bulunamadı: {selected_actor}")
 
 
 
111
 
112
  with col_match:
113
  st.subheader("🎯 Best Career Matches / En İyi Kariyer Eşleşmeleri")
114
  st.write("Comparing the star's DNA with movie roles... / Yıldızın DNA'sı film rolleriyle karşılaştırılıyor...")
115
 
116
- if st.button("🚀 Match and Recommend / Eşleştir ve Öner") and selected_actor != "Yok":
117
- if movie_dict:
 
 
 
118
  actor_v = tum_unlu_verileri[selected_actor]['v']
119
  results = []
120
  for i in movie_dict:
@@ -129,7 +140,7 @@ with col_match:
129
  st.write(f"Match Score / Uyum Skoru: **%{pct}**")
130
  st.progress(pct / 100)
131
  else:
132
- st.error("Model dosyası eksik! / movie_model.pkl dosyası bulunamadı!")
133
 
134
  st.markdown("---")
135
  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.")
 
60
  # --- ARAYÜZ AYARLARI ---
61
  st.set_page_config(page_title="CastMatch AI", layout="wide")
62
 
63
+ # RESİM CACHE
64
  @st.cache_data
65
  def get_image_path(actor_name):
66
+ if not actor_name or actor_name == "Choose... / Seçiniz...":
67
+ return None
68
  ana_dizin = os.getcwd()
69
  search_term = actor_name.lower().replace(" ", "_")
70
  search_term_plain = actor_name.lower()
 
75
  return os.path.join(ana_dizin, f)
76
  return None
77
 
78
+ # --- SOL PANEL ---
79
  st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
80
  st.sidebar.markdown("---")
81
 
 
84
  ["Male / Erkek", "Female / Kadın"]
85
  )
86
 
87
+ # Sidebar'daki oyuncu listesi (Bilgilendirme amaçlı)
88
  filtered_names = [name for name, data in tum_unlu_verileri.items() if data['c'] == gender_choice]
 
89
  st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
90
  for n in filtered_names:
91
  st.sidebar.write(f"• {n}")
 
99
 
100
  with col_actor:
101
  st.subheader("👤 Pick an Actor / Oyuncu Seç")
 
102
 
103
+ # Seçeneklerin en başına boş bir seçenek ekliyoruz (index=0 varsayılan olur)
104
+ options = ["Choose... / Seçiniz..."] + filtered_names
105
+ selected_actor = st.selectbox("Select from list / Listeden seçin:", options)
106
+
107
+ image_placeholder = st.empty()
108
 
109
+ # Eğer bir oyuncu seçilmişse (Seçiniz... değilse)
110
+ if selected_actor != "Choose... / Seçiniz...":
111
  found_path = get_image_path(selected_actor)
112
  if found_path:
113
  image_placeholder.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
114
  else:
115
+ image_placeholder.warning(f"⚠️ Resim bulunamadı: {selected_actor}")
116
+ else:
117
+ # Seçim yapılmadıysa açıklama göster
118
+ image_placeholder.info("Please select an actor to see the profile. / Profili görmek için bir oyuncu seçin.")
119
 
120
  with col_match:
121
  st.subheader("🎯 Best Career Matches / En İyi Kariyer Eşleşmeleri")
122
  st.write("Comparing the star's DNA with movie roles... / Yıldızın DNA'sı film rolleriyle karşılaştırılıyor...")
123
 
124
+ # Sadece seçim yapıldığında buton çalışsın
125
+ if st.button("🚀 Match and Recommend / Eşleştir ve Öner"):
126
+ if selected_actor == "Choose... / Seçiniz...":
127
+ st.warning("Please pick an actor first! / Lütfen önce bir oyuncu seçin!")
128
+ elif movie_dict:
129
  actor_v = tum_unlu_verileri[selected_actor]['v']
130
  results = []
131
  for i in movie_dict:
 
140
  st.write(f"Match Score / Uyum Skoru: **%{pct}**")
141
  st.progress(pct / 100)
142
  else:
143
+ st.error("Model dosyası eksik!")
144
 
145
  st.markdown("---")
146
  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.")