Harsh502s commited on
Commit
7c1fb89
Β·
1 Parent(s): ebec318
Files changed (2) hide show
  1. Pages/Recommender App.py +62 -4
  2. app.py +10 -11
Pages/Recommender App.py CHANGED
@@ -51,11 +51,27 @@ def fetch_poster(anime_id):
51
 
52
 
53
  # Recommender System
54
- def recommend(anime):
55
- index = anime_data[anime_data["title"] == anime].index[0]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  distances = sorted(
57
  list(enumerate(similarity[index])), reverse=True, key=lambda x: x[1]
58
  )
 
59
  recommended_anime_names = []
60
  recommended_anime_posters = []
61
  recommended_anime_urls = []
@@ -185,7 +201,42 @@ def top_animes_custom(anime_select):
185
 
186
  # Function to display the top 8 animes with user given anime name and genre
187
  def top_animes_custom_genres(anime_select, genre_select):
188
- pass
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
 
190
 
191
  # Recommender Page
@@ -212,12 +263,19 @@ def recommender_page():
212
  genre_select = st.selectbox("Select a Genre", get_genres(), key="genre_select")
213
 
214
  if st.button("Recommendation"):
 
215
  if anime_select == "Top 8 Animes" and genre_select == "All Genres":
216
  top_animes()
 
217
  elif anime_select == "Top 8 Animes" and genre_select != "All Genres":
218
  top_animes_genres(genre_select)
219
- else:
 
220
  top_animes_custom(anime_select)
 
 
 
 
221
 
222
 
223
  if __name__ == "__main__":
 
51
 
52
 
53
  # Recommender System
54
+ def recommend(anime, genre=None):
55
+ if genre == None:
56
+ index = (
57
+ anime_data[anime_data["title"] == anime]
58
+ .sort_values("score", ascending=False)
59
+ .index[0]
60
+ )
61
+ elif genre != None:
62
+ index = (
63
+ anime_data[
64
+ (anime_data["title"] == anime)
65
+ | (anime_data["genres"].str.contains(genre))
66
+ ]
67
+ .sort_values("score", ascending=False)
68
+ .index[0]
69
+ )
70
+ # index = anime_data[anime_data["title"] == anime].index[0]
71
  distances = sorted(
72
  list(enumerate(similarity[index])), reverse=True, key=lambda x: x[1]
73
  )
74
+
75
  recommended_anime_names = []
76
  recommended_anime_posters = []
77
  recommended_anime_urls = []
 
201
 
202
  # Function to display the top 8 animes with user given anime name and genre
203
  def top_animes_custom_genres(anime_select, genre_select):
204
+ (
205
+ recommended_anime_names,
206
+ recommended_anime_posters,
207
+ recommended_anime_urls,
208
+ ) = recommend(anime_select, genre_select)
209
+ with st.container():
210
+ col1, col2, col3, col4 = st.columns(4)
211
+ with col1:
212
+ st.write(f"[{recommended_anime_names[0]}]({recommended_anime_urls[0]})")
213
+ st.image(recommended_anime_posters[0])
214
+ with col2:
215
+ st.write(f"[{recommended_anime_names[1]}]({recommended_anime_urls[1]})")
216
+ st.image(recommended_anime_posters[1])
217
+ with col3:
218
+ st.write(f"[{recommended_anime_names[2]}]({recommended_anime_urls[2]})")
219
+ st.image(recommended_anime_posters[2])
220
+ with col4:
221
+ st.write(f"[{recommended_anime_names[3]}]({recommended_anime_urls[3]})")
222
+ st.image(recommended_anime_posters[3])
223
+
224
+ st.divider()
225
+
226
+ with st.container():
227
+ col5, col6, col7, col8 = st.columns(4)
228
+ with col5:
229
+ st.write(f"[{recommended_anime_names[4]}]({recommended_anime_urls[4]})")
230
+ st.image(recommended_anime_posters[4])
231
+ with col6:
232
+ st.write(f"[{recommended_anime_names[5]}]({recommended_anime_urls[5]})")
233
+ st.image(recommended_anime_posters[5])
234
+ with col7:
235
+ st.write(f"[{recommended_anime_names[6]}]({recommended_anime_urls[6]})")
236
+ st.image(recommended_anime_posters[6])
237
+ with col8:
238
+ st.write(f"[{recommended_anime_names[7]}]({recommended_anime_urls[7]})")
239
+ st.image(recommended_anime_posters[7])
240
 
241
 
242
  # Recommender Page
 
263
  genre_select = st.selectbox("Select a Genre", get_genres(), key="genre_select")
264
 
265
  if st.button("Recommendation"):
266
+ st.divider()
267
  if anime_select == "Top 8 Animes" and genre_select == "All Genres":
268
  top_animes()
269
+ st.divider()
270
  elif anime_select == "Top 8 Animes" and genre_select != "All Genres":
271
  top_animes_genres(genre_select)
272
+ st.divider()
273
+ elif anime_select != "Top 8 Animes" and genre_select == "All Genres":
274
  top_animes_custom(anime_select)
275
+ st.divider()
276
+ elif anime_select != "Top 8 Animes" and genre_select != "All Genres":
277
+ top_animes_custom_genres(anime_select, genre_select)
278
+ st.divider()
279
 
280
 
281
  if __name__ == "__main__":
app.py CHANGED
@@ -2,17 +2,6 @@ import streamlit as st
2
  from st_pages import Page, show_pages
3
  from PIL import Image
4
 
5
- # Configuring Pages
6
-
7
- show_pages(
8
- [
9
- Page(r"app.py", "Homepage", "🏠"),
10
- Page(r"Pages/Recommender App.py", "Anime Recommender", "πŸ“Ί"),
11
- Page(r"Pages/About.py", "About", "πŸ‘‹"),
12
- ]
13
- )
14
-
15
-
16
  # Make the page full width
17
  im = Image.open(r"ninja.png")
18
  st.set_page_config(
@@ -23,6 +12,16 @@ st.set_page_config(
23
  menu_items={"About": "This Anime Recommender App is made by Harshit Singh."},
24
  )
25
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  # Home Page
28
  def home_page():
 
2
  from st_pages import Page, show_pages
3
  from PIL import Image
4
 
 
 
 
 
 
 
 
 
 
 
 
5
  # Make the page full width
6
  im = Image.open(r"ninja.png")
7
  st.set_page_config(
 
12
  menu_items={"About": "This Anime Recommender App is made by Harshit Singh."},
13
  )
14
 
15
+ # Configuring Pages
16
+
17
+ show_pages(
18
+ [
19
+ Page(r"app.py", "Homepage", "🏠"),
20
+ Page(r"Pages/Recommender App.py", "Anime Recommender", "πŸ“Ί"),
21
+ Page(r"Pages/About.py", "About", "πŸ‘‹"),
22
+ ]
23
+ )
24
+
25
 
26
  # Home Page
27
  def home_page():