ESMATUGBA commited on
Commit
19d4ba2
·
verified ·
1 Parent(s): e970b6a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -75
app.py CHANGED
@@ -16,7 +16,7 @@ def load_data():
16
  model_data = load_data()
17
  movie_dict = model_data['movie_dict'] if model_data else {}
18
 
19
- # --- 2. TÜM OYUNCU DNA VERİTABANI ---
20
  tum_unlu_verileri = {
21
  "Sylvester Stallone": {"c": "Male / Erkek", "v": [0.9, 0.2, 0.1, 0.1, 0.1, 0.8]},
22
  "Robert De Niro": {"c": "Male / Erkek", "v": [0.2, 0.1, 0.1, 0.9, 0.1, 0.8]},
@@ -57,86 +57,23 @@ tum_unlu_verileri = {
57
  "Cameron Diaz": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.95, 0.7, 0.1, 0.1]}
58
  }
59
 
60
- # --- 3. RESİM AYARLARI ---
61
- resim_klasoru = os.path.join(os.getcwd(), "40 resim")
62
-
63
- # --- 4. ARAYÜZ AYARLARI ---
64
  st.set_page_config(page_title="CastMatch AI", layout="wide")
65
 
 
 
 
 
 
66
  # --- 5. SOL PANEL (SIDEBAR) ---
67
- st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
68
  st.sidebar.markdown("---")
69
 
70
  gender_choice = st.sidebar.radio(
71
- "1. Select Category / Kategori Seçin:",
72
  ["Male / Erkek", "Female / Kadın"],
73
- key="unique_gender_radio" # Hata veren ID burasıydı, eşsiz yaptık
74
- )
75
-
76
- filtered_names = [name for name, data in tum_unlu_verileri.items() if data['c'] == gender_choice]
77
-
78
- st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
79
-
80
- # Sol taraftaki tıklanabilir liste
81
- selected_actor_sidebar = st.sidebar.radio(
82
- "Quick Selection:",
83
- filtered_names,
84
- key="unique_actor_list_radio" # Sol paneldeki isim listesi
85
  )
86
 
87
- # --- 6. ANA EKRAN ---
88
- st.title("🎬 CastMatch AI: Talent Matching System / Yetenek Eşleştirme Sistemi")
89
- st.markdown("#### Discover the perfect roles for global stars! / Dünya yıldızları için en ideal rolleri keşfedin!")
90
- st.markdown("---")
91
-
92
- col_actor, col_match = st.columns([1, 2])
93
-
94
- with col_actor:
95
- st.subheader("👤 Pick an Actor / Oyuncu Seç")
96
-
97
- # Sol taraftan gelen seçimi buradaki kutunun varsayılanı yapıyoruz
98
- current_idx = filtered_names.index(selected_actor_sidebar)
99
-
100
- selected_actor = st.selectbox(
101
- "Select from list / Listeden seçin:",
102
- filtered_names,
103
- index=current_idx,
104
- key="main_screen_selectbox"
105
- )
106
-
107
- # Resim gösterme mantığı
108
- found_path = None
109
- if os.path.exists(resim_klasoru):
110
- search_target = selected_actor.replace(" ", "_").lower()
111
- for f in os.listdir(resim_klasoru):
112
- if f.lower().startswith(search_target) or selected_actor.lower() in f.lower():
113
- found_path = os.path.join(resim_klasoru, f)
114
- break
115
-
116
- if found_path:
117
- st.image(found_path, caption=f"Profile: {selected_actor}", use_container_width=True)
118
- else:
119
- st.warning(f"Image not found for: {selected_actor}")
120
-
121
- with col_match:
122
- st.subheader("🎯 Best Career Matches / En İyi Kariyer Eşleşmeleri")
123
- st.write("Comparing the star's DNA with movie roles...")
124
-
125
- if st.button("🚀 Match and Recommend / Eşleştir ve Öner"):
126
- if movie_dict:
127
- actor_v = tum_unlu_verileri[selected_actor]['v']
128
- results = []
129
- for i in movie_dict:
130
- dist = spatial.distance.cosine(actor_v, movie_dict[i][1][:6]) + random.uniform(0, 0.0001)
131
- results.append((movie_dict[i][0], dist))
132
-
133
- top_matches = sorted(results, key=lambda x: x[1])[:5]
134
- for i, (film, score) in enumerate(top_matches, 1):
135
- pct = round((1 - score) * 100, 1)
136
- st.success(f"**{i}. {film}** (%{pct})")
137
- st.progress(pct / 100)
138
- else:
139
- st.error("Model dosyası bulunamadı!")
140
-
141
- st.markdown("---")
142
- 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.")
 
16
  model_data = load_data()
17
  movie_dict = model_data['movie_dict'] if model_data else {}
18
 
19
+ # --- 2. OYUNCU DNA VERİTABANI ---
20
  tum_unlu_verileri = {
21
  "Sylvester Stallone": {"c": "Male / Erkek", "v": [0.9, 0.2, 0.1, 0.1, 0.1, 0.8]},
22
  "Robert De Niro": {"c": "Male / Erkek", "v": [0.2, 0.1, 0.1, 0.9, 0.1, 0.8]},
 
57
  "Cameron Diaz": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.95, 0.7, 0.1, 0.1]}
58
  }
59
 
60
+ # --- 3. SAYFA AYARLARI ---
 
 
 
61
  st.set_page_config(page_title="CastMatch AI", layout="wide")
62
 
63
+ # --- 4. SESSION STATE (BÜTÜN DÜĞÜMÜ ÇÖZEN KISIM) ---
64
+ # Uygulama ilk açıldığında varsayılan bir oyuncu seçelim
65
+ if "current_actor" not in st.session_state:
66
+ st.session_state.current_actor = "Sylvester Stallone"
67
+
68
  # --- 5. SOL PANEL (SIDEBAR) ---
69
+ st.sidebar.title("🔍 Control Panel")
70
  st.sidebar.markdown("---")
71
 
72
  gender_choice = st.sidebar.radio(
73
+ "1. Select Category:",
74
  ["Male / Erkek", "Female / Kadın"],
75
+ key="gender_radio"
 
 
 
 
 
 
 
 
 
 
 
76
  )
77
 
78
+ # Kategoriye göre listeyi filtrele
79
+ filtered_names = [name for name, data in tum_unlu_