Shiva7706 commited on
Commit
ab0b5a5
·
1 Parent(s): ba8291e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -0
app.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # main code
2
+
3
+ import streamlit as st
4
+ import pickle
5
+ import requests
6
+
7
+ movies = pickle.load(open("movies_list.pkl", 'rb'))
8
+ similarity = pickle.load(open("similarity.pkl",'rb'))
9
+ movies_list = movies['title'].values
10
+ st.header("Movie Recommender System")
11
+ selectvalue = st.selectbox("Select movie from dropdown", movies_list)
12
+
13
+ def fetch_poster(movie_id):
14
+ try:
15
+ url = "https://api.themoviedb.org/3/movie/{}?api_key=8cfe8dff1a6fff88fe27b573ee65c035&language=en-US".format(movie_id)
16
+ # Disablinb SSL verification for development
17
+ data = requests.get(url, verify=False)
18
+ data = data.json()
19
+ poster_path = data['poster_path']
20
+ if poster_path:
21
+ full_path = "https://image.tmdb.org/t/p/w500/" + poster_path
22
+ return full_path
23
+ else:
24
+ st.warning(f"No poster found for movie ID {movie_id}")
25
+ return None
26
+ except Exception as e:
27
+ st.error(f"Error fetching poster: {str(e)}")
28
+ return None
29
+
30
+ def recommend(movie):
31
+ index = movies[movies['title']==movie].index[0]
32
+ distance = sorted(list(enumerate(similarity[index])), reverse=True, key=lambda vector:vector[1])
33
+ recommend_movie = []
34
+ recommend_poster = []
35
+ for i in distance[1:6]:
36
+ movies_id = movies.iloc[i[0]].id
37
+ recommend_movie.append(movies.iloc[i[0]].title)
38
+ poster = fetch_poster(movies_id)
39
+ recommend_poster.append(poster)
40
+ return recommend_movie, recommend_poster
41
+
42
+ if st.button("Show Recommend"):
43
+ movie_name, movie_poster = recommend(selectvalue)
44
+ cols = st.columns(5)
45
+ for idx, (col, name, poster) in enumerate(zip(cols, movie_name, movie_poster)):
46
+ with col:
47
+ st.text(name)
48
+ if poster: # showing image if url exists
49
+ st.image(poster)
50
+ else:
51
+ st.write("No poster available")