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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -9
app.py CHANGED
@@ -60,20 +60,87 @@ tum_unlu_verileri = {
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_
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  # --- 3. SAYFA AYARLARI ---
61
  st.set_page_config(page_title="CastMatch AI", layout="wide")
62
 
63
+ # --- 4. SESSION STATE (SENKRONİZASYON) ---
64
+ if "actor_key" not in st.session_state:
65
+ st.session_state.actor_key = "Sylvester Stallone"
 
66
 
67
+ # --- 5. SOL PANEL ---
68
  st.sidebar.title("🔍 Control Panel")
69
  st.sidebar.markdown("---")
70
 
71
+ gender = st.sidebar.radio(
72
  "1. Select Category:",
73
  ["Male / Erkek", "Female / Kadın"],
74
+ key="gender_sel"
75
  )
76
 
77
+ # Kategoriye göre listeyi al
78
+ available_names = [name for name, d in tum_unlu_verileri.items() if d['c'] == gender]
79
+
80
+ # Hafızadaki oyuncu listede yoksa ilkini seç
81
+ if st.session_state.actor_key not in available_names:
82
+ st.session_state.actor_key = available_names[0]
83
+
84
+ def on_sidebar_change():
85
+ st.session_state.actor_key = st.session_state.side_actor
86
+
87
+ st.sidebar.radio(
88
+ "📋 Available Cast:",
89
+ available_names,
90
+ index=available_names.index(st.session_state.actor_key),
91
+ key="side_actor",
92
+ on_change=on_sidebar_change
93
+ )
94
+
95
+ # --- 6. ANA EKRAN ---
96
+ st.title("🎬 CastMatch AI: Talent Matching System")
97
+ st.markdown("---")
98
+
99
+ col1, col2 = st.columns([1, 2])
100
+
101
+ with col1:
102
+ st.subheader("👤 Pick an Actor")
103
+
104
+ def on_main_change():
105
+ st.session_state.actor_key = st.session_state.main_actor
106
+
107
+ selected_actor = st.selectbox(
108
+ "Select from list:",
109
+ available_names,
110
+ index=available_names.index(st.session_state.actor_key),
111
+ key="main_actor",
112
+ on_change=on_main_change
113
+ )
114
+
115
+ # RESİM YÜKLEME
116
+ res_dir = os.path.join(os.getcwd(), "40 resim")
117
+ img_path = None
118
+ if os.path.exists(res_dir):
119
+ target = selected_actor.replace(" ", "_").lower()
120
+ for f in os.listdir(res_dir):
121
+ if target in f.lower() or selected_actor.lower() in f.lower():
122
+ img_path = os.path.join(res_dir, f)
123
+ break
124
+
125
+ if img_path:
126
+ st.image(img_path, caption=selected_actor, use_container_width=True)
127
+ else:
128
+ st.warning(f"Resim bulunamadı: {selected_actor}")
129
+
130
+ with col2:
131
+ st.subheader("🎯 Best Career Matches")
132
+ if st.button("🚀 Match and Recommend"):
133
+ if movie_dict:
134
+ v = tum_unlu_verileri[selected_actor]['v']
135
+ res = []
136
+ for i in movie_dict:
137
+ d = spatial.distance.cosine(v, movie_dict[i][1][:6]) + random.uniform(0, 0.0001)
138
+ res.append((movie_dict[i][0], d))
139
+
140
+ for i, (film, sc) in enumerate(sorted(res, key=lambda x: x[1])[:5], 1):
141
+ pct = round((1 - sc) * 100, 1)
142
+ st.success(f"**{i}. {film}** (%{pct})")
143
+ st.progress(pct / 100)
144
+
145
+ st.markdown("---")
146
+ st.info("💡 **How it works?**: This AI analyzes career vectors based on available local assets.")