|
from flask import Flask,render_template,request
|
|
import pickle
|
|
import numpy as np
|
|
|
|
merged=pickle.load(open('models/merged_df.pkl', 'rb'))
|
|
pt=pickle.load(open('models/pt.pkl', 'rb'))
|
|
anime_dt=pickle.load(open('models/anime_dt.pkl', 'rb'))
|
|
similarity_scores=pickle.load(open('models/similarity_scores.pkl', 'rb'))
|
|
|
|
app = Flask(__name__)
|
|
|
|
@app.route('/')
|
|
def index():
|
|
return render_template('index.html',
|
|
anime_name=list(merged['Name'].values),
|
|
score=list(merged['score'].values),
|
|
scored_by=list(merged['scored_by'].values),
|
|
Genres=list(merged['Genres'].values),
|
|
Studios=list(merged['Studios'].values),
|
|
image=list(merged['Image URL'].values)
|
|
)
|
|
|
|
@app.route('/recommend')
|
|
def recommend_ui():
|
|
return render_template('recommend.html')
|
|
|
|
@app.route('/recommend_animes',methods=['post'])
|
|
def recommend():
|
|
user_input = request.form.get('user_input')
|
|
index = np.where(pt.index == user_input)[0][0]
|
|
similar_items = sorted(list(enumerate(similarity_scores[index])), key=lambda x: x[1], reverse=True)[1:5]
|
|
|
|
data = []
|
|
for i in similar_items:
|
|
item = []
|
|
temp_df = anime_dt[anime_dt['Name'] == pt.index[i[0]]]
|
|
item.extend(list(temp_df.drop_duplicates('Name')['Name'].values))
|
|
item.extend(list(temp_df.drop_duplicates('Name')['Genres'].values))
|
|
item.extend(list(temp_df.drop_duplicates('Name')['Image URL'].values))
|
|
item.extend(list(temp_df.drop_duplicates('Name')['Studios'].values))
|
|
|
|
data.append(item)
|
|
|
|
print(data)
|
|
|
|
return render_template('recommend.html',data=data)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True) |