Spaces:
Sleeping
Sleeping
Commit
Browse files- Pages/Recommender App.py +62 -4
- 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
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():
|