ESMATUGBA commited on
Commit
b36da3e
·
verified ·
1 Parent(s): 08ddb38

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -26
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. 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]},
@@ -32,35 +32,29 @@ tum_unlu_verileri = {
32
  "Tom Hanks": {"c": "Male / Erkek", "v": [0.2, 0.6, 0.5, 0.9, 0.1, 0.1]},
33
  "Morgan Freeman": {"c": "Male / Erkek", "v": [0.1, 0.3, 0.1, 0.9, 0.1, 0.6]},
34
  "Al Pacino": {"c": "Male / Erkek", "v": [0.2, 0.1, 0.1, 0.95, 0.1, 0.8]},
35
- "Cillian Murphy": {"c": "Male / Erkek", "v": [0.4, 0.1, 0.1, 0.9, 0.4, 0.8]},
36
  "Jackie Chan": {"c": "Male / Erkek", "v": [0.9, 0.7, 0.9, 0.1, 0.1, 0.1]},
37
  "Denzel Washington": {"c": "Male / Erkek", "v": [0.8, 0.2, 0.1, 0.9, 0.1, 0.7]},
38
- "George Clooney": {"c": "Male / Erkek", "v": [0.3, 0.4, 0.5, 0.8, 0.1, 0.6]},
39
- "Jake Gyllenhaal": {"c": "Male / Erkek", "v": [0.6, 0.1, 0.1, 0.9, 0.2, 0.8]},
40
  "Pierce Brosnan": {"c": "Male / Erkek", "v": [0.8, 0.7, 0.3, 0.4, 0.1, 0.6]},
 
 
 
41
  "Angelina Jolie": {"c": "Female / Kadın", "v": [0.9, 0.7, 0.1, 0.8, 0.1, 0.6]},
42
  "Natalie Portman": {"c": "Female / Kadın", "v": [0.3, 0.2, 0.1, 0.9, 0.6, 0.7]},
43
  "Scarlett Johansson": {"c": "Female / Kadın", "v": [0.9, 0.6, 0.2, 0.7, 0.8, 0.5]},
44
  "Charlize Theron": {"c": "Female / Kadın", "v": [0.8, 0.3, 0.1, 0.9, 0.2, 0.7]},
45
- "Milla Jovovich": {"c": "Female / Kadın", "v": [0.9, 0.4, 0.1, 0.1, 0.9, 0.3]},
46
  "Sandra Bullock": {"c": "Female / Kadın", "v": [0.2, 0.1, 0.9, 0.8, 0.1, 0.6]},
47
  "Nicole Kidman": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.1, 0.95, 0.1, 0.7]},
48
- "Jennifer Lawrence": {"c": "Female / Kadın", "v": [0.7, 0.8, 0.3, 0.9, 0.4, 0.2]},
49
  "Meryl Streep": {"c": "Female / Kadın", "v": [0.1, 0.1, 0.4, 0.95, 0.1, 0.1]},
50
- "Salma Hayek": {"c": "Female / Kadın", "v": [0.6, 0.3, 0.5, 0.8, 0.1, 0.1]},
51
  "Anne Hathaway": {"c": "Female / Kadın", "v": [0.2, 0.7, 0.8, 0.8, 0.1, 0.1]},
52
- "Keira Knightley": {"c": "Female / Kadın", "v": [0.1, 0.8, 0.1, 0.95, 0.1, 0.1]},
53
  "Julia Roberts": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.9, 0.9, 0.1, 0.1]},
54
  "Penelope Cruz": {"c": "Female / Kadın", "v": [0.2, 0.3, 0.6, 0.9, 0.1, 0.6]},
55
- "Monica Bellucci": {"c": "Female / Kadın", "v": [0.6, 0.1, 0.1, 0.8, 0.5, 0.3]},
56
- "Emily Blunt": {"c": "Female / Kadın", "v": [0.7, 0.6, 0.1, 0.8, 0.5, 0.6]},
57
- "Cameron Diaz": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.95, 0.7, 0.1, 0.1]}
58
  }
59
 
60
  # --- ARAYÜZ AYARLARI ---
61
  st.set_page_config(page_title="CastMatch AI", layout="wide")
62
 
63
- # CSS: Resim alanını sabitle ve tasarımı temizle
64
  st.markdown("""
65
  <style>
66
  [data-testid="stImage"] {
@@ -69,7 +63,6 @@ st.markdown("""
69
  display: flex;
70
  align-items: center;
71
  justify-content: center;
72
- background-color: transparent;
73
  }
74
  .stImage img {
75
  max-height: 400px !important;
@@ -84,8 +77,8 @@ st.sidebar.title("🔍 Control Panel / Kontrol Paneli")
84
  st.sidebar.markdown("---")
85
  gender_choice = st.sidebar.radio("1. Select Category / Kategori Seçin:", ["Male / Erkek", "Female / Kadın"])
86
 
87
- # Hugging Face ana dizinindeki dosyaları listele
88
- ana_dizin_dosyalari = os.listdir(".")
89
  filtered_names = [name for name in tum_unlu_verileri.keys() if tum_unlu_verileri[name]['c'] == gender_choice]
90
 
91
  st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
@@ -93,39 +86,41 @@ for n in filtered_names:
93
  st.sidebar.write(f"• {n}")
94
 
95
  # --- ANA EKRAN ---
96
- st.title("🎬 CastMatch AI: Talent Matching System / Yetenek Eşleştirme Sistemi")
97
  st.markdown("---")
98
 
99
  col_actor, col_match = st.columns([1, 2])
100
 
101
  with col_actor:
102
  st.subheader("👤 Pick an Actor / Oyuncu Seç")
103
- selected_actor = st.selectbox("Select from list / Seçiniz:", ["Choose..."] + filtered_names)
104
 
105
  if selected_actor != "Choose...":
106
  found_path = None
107
- target_underscore = selected_actor.replace(" ", "_").lower()
108
- target_plain = selected_actor.lower()
 
109
 
110
- for f in ana_dizin_dosyalari:
111
  f_lower = f.lower()
112
  if f_lower.endswith(('.jpg', '.png', '.jpeg')):
113
- if target_underscore in f_lower or target_plain in f_lower:
 
114
  found_path = f
115
  break
116
 
117
  if found_path:
118
  st.image(found_path, use_container_width=False)
119
  else:
120
- st.error(f"Image not found! / Resim bulunamadı: {selected_actor}")
 
121
  else:
122
- # Çizgisiz temiz boşluk alanı
123
  st.markdown('<div style="height: 400px; display: flex; align-items: center; justify-content: center; color: #999; font-style: italic;">Select an actor to view profile</div>', unsafe_allow_html=True)
124
 
125
  with col_match:
126
- st.subheader("🎯 Best Career Matches / En İyi Kariyer Eşleşmeleri")
127
 
128
- if st.button("🚀 Match and Recommend / Eşleştir ve Öner") and selected_actor != "Choose...":
129
  if movie_dict:
130
  actor_v = tum_unlu_verileri[selected_actor]['v']
131
  results = []
@@ -142,6 +137,5 @@ with col_match:
142
  else:
143
  st.error("Model file missing!")
144
 
145
- # --- ALT BİLGİ ---
146
  st.markdown("---")
147
  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 (Hugging Face Listenle Tam Uyumlu) ---
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]},
 
32
  "Tom Hanks": {"c": "Male / Erkek", "v": [0.2, 0.6, 0.5, 0.9, 0.1, 0.1]},
33
  "Morgan Freeman": {"c": "Male / Erkek", "v": [0.1, 0.3, 0.1, 0.9, 0.1, 0.6]},
34
  "Al Pacino": {"c": "Male / Erkek", "v": [0.2, 0.1, 0.1, 0.95, 0.1, 0.8]},
 
35
  "Jackie Chan": {"c": "Male / Erkek", "v": [0.9, 0.7, 0.9, 0.1, 0.1, 0.1]},
36
  "Denzel Washington": {"c": "Male / Erkek", "v": [0.8, 0.2, 0.1, 0.9, 0.1, 0.7]},
 
 
37
  "Pierce Brosnan": {"c": "Male / Erkek", "v": [0.8, 0.7, 0.3, 0.4, 0.1, 0.6]},
38
+ "Leonardo DiCaprio": {"c": "Male / Erkek", "v": [0.3, 0.1, 0.1, 0.95, 0.1, 0.8]},
39
+ "Matt Damon": {"c": "Male / Erkek", "v": [0.8, 0.3, 0.2, 0.9, 0.2, 0.6]},
40
+ "Will Smith": {"c": "Male / Erkek", "v": [0.9, 0.6, 0.8, 0.5, 0.1, 0.2]},
41
  "Angelina Jolie": {"c": "Female / Kadın", "v": [0.9, 0.7, 0.1, 0.8, 0.1, 0.6]},
42
  "Natalie Portman": {"c": "Female / Kadın", "v": [0.3, 0.2, 0.1, 0.9, 0.6, 0.7]},
43
  "Scarlett Johansson": {"c": "Female / Kadın", "v": [0.9, 0.6, 0.2, 0.7, 0.8, 0.5]},
44
  "Charlize Theron": {"c": "Female / Kadın", "v": [0.8, 0.3, 0.1, 0.9, 0.2, 0.7]},
 
45
  "Sandra Bullock": {"c": "Female / Kadın", "v": [0.2, 0.1, 0.9, 0.8, 0.1, 0.6]},
46
  "Nicole Kidman": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.1, 0.95, 0.1, 0.7]},
 
47
  "Meryl Streep": {"c": "Female / Kadın", "v": [0.1, 0.1, 0.4, 0.95, 0.1, 0.1]},
 
48
  "Anne Hathaway": {"c": "Female / Kadın", "v": [0.2, 0.7, 0.8, 0.8, 0.1, 0.1]},
 
49
  "Julia Roberts": {"c": "Female / Kadın", "v": [0.1, 0.2, 0.9, 0.9, 0.1, 0.1]},
50
  "Penelope Cruz": {"c": "Female / Kadın", "v": [0.2, 0.3, 0.6, 0.9, 0.1, 0.6]},
51
+ "Emma Watson": {"c": "Female / Kadın", "v": [0.1, 0.8, 0.2, 0.9, 0.6, 0.1]}
 
 
52
  }
53
 
54
  # --- ARAYÜZ AYARLARI ---
55
  st.set_page_config(page_title="CastMatch AI", layout="wide")
56
 
57
+ # CSS: Resim alanını sabitleyip titremeyi kesen stil
58
  st.markdown("""
59
  <style>
60
  [data-testid="stImage"] {
 
63
  display: flex;
64
  align-items: center;
65
  justify-content: center;
 
66
  }
67
  .stImage img {
68
  max-height: 400px !important;
 
77
  st.sidebar.markdown("---")
78
  gender_choice = st.sidebar.radio("1. Select Category / Kategori Seçin:", ["Male / Erkek", "Female / Kadın"])
79
 
80
+ # Hugging Face ana dizindeki gerçek dosyaları çek
81
+ hf_files = os.listdir(".")
82
  filtered_names = [name for name in tum_unlu_verileri.keys() if tum_unlu_verileri[name]['c'] == gender_choice]
83
 
84
  st.sidebar.markdown(f"### 📋 Available Cast / Mevcut Oyuncular")
 
86
  st.sidebar.write(f"• {n}")
87
 
88
  # --- ANA EKRAN ---
89
+ st.title("🎬 CastMatch AI: Talent Matching System")
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
+ selected_actor = st.selectbox("Select from list:", ["Choose..."] + filtered_names)
97
 
98
  if selected_actor != "Choose...":
99
  found_path = None
100
+ # Hugging Face'deki isimlendirme varyasyonlarını kontrol et
101
+ search_underscore = selected_actor.replace(" ", "_").lower()
102
+ search_plain = selected_actor.lower()
103
 
104
+ for f in hf_files:
105
  f_lower = f.lower()
106
  if f_lower.endswith(('.jpg', '.png', '.jpeg')):
107
+ # Sylvester Stallone.png veya Brad_Pitt.png gibi her durumu yakala
108
+ if search_underscore in f_lower or search_plain in f_lower:
109
  found_path = f
110
  break
111
 
112
  if found_path:
113
  st.image(found_path, use_container_width=False)
114
  else:
115
+ st.warning(f"Resim dosyası eşleşmedi: {selected_actor}")
116
+ st.markdown('<div style="height: 300px;"></div>', unsafe_allow_html=True)
117
  else:
 
118
  st.markdown('<div style="height: 400px; display: flex; align-items: center; justify-content: center; color: #999; font-style: italic;">Select an actor to view profile</div>', unsafe_allow_html=True)
119
 
120
  with col_match:
121
+ st.subheader("🎯 Best Career Matches")
122
 
123
+ if st.button("🚀 Match and Recommend") and selected_actor != "Choose...":
124
  if movie_dict:
125
  actor_v = tum_unlu_verileri[selected_actor]['v']
126
  results = []
 
137
  else:
138
  st.error("Model file missing!")
139
 
 
140
  st.markdown("---")
141
  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.")