SameerR007's picture
Update app.py
7178f1c
import streamlit as st
import nltk
st.header("New York Times Book recommendation")
st.markdown("Takes a book that user has read as a input and gives recommendation based on top 70 NYT bestsellers.")
book=st.text_input("Enter the book you have read")
def gsearch(book):
a=book.split()
if len(a)==1:
return(a[0])
else:
abc=""
for i in a:
abc=abc+i+"+"
return(abc[0:len(abc)-1])
gs=gsearch(book)
import requests
if st.button("Recommend"):
breakk=0
data_id=requests.get("https://www.googleapis.com/books/v1/volumes?q="+gs).json()
try:
booka=str(data_id['items'][0]['volumeInfo']['authors'][0])
desc=str(data_id['items'][0]['volumeInfo']['description'])
genres=str(data_id['items'][0]['volumeInfo']['categories'][0])
except:
st.markdown("No data for this book. Sorry please try again with another one.")
breakk=1
if(breakk==0):
tag=genres+" "+booka+" "+desc
tag=tag.lower()
import pickle
ps=pickle.load(open("ps.pkl","rb"))
def stem(a):
y=[]
for i in a.split():
y.append(ps.stem(i))
return(" ".join(y))
tag=stem(tag)
cv=pickle.load(open("cv.pkl","rb"))
vec=pickle.load(open("vec.pkl","rb"))
vec1=cv.transform([tag])
from scipy.sparse import vstack
fvec=vstack([vec1, vec])
from sklearn.metrics.pairwise import cosine_similarity
similarity=cosine_similarity(fvec)
distances=similarity[0]
book_list_index=sorted(list(enumerate(distances)),reverse=True,key=lambda x:x[1])[1]
import pandas as pd
from PIL import Image
from io import BytesIO
data=pd.read_csv("streamlitdata.csv")
if (str(data.iloc[book_list_index[0]-1]['title']).lower())==(book.lower()):
st.text("**")
book_list_index=sorted(list(enumerate(distances)),reverse=True,key=lambda x:x[1])[2]
st.text("Book recomended-"+data.iloc[book_list_index[0]-1]['title'])
response = requests.get(str(data.iloc[book_list_index[0]-1]['img']))
img = Image.open(BytesIO(response.content))
st.image(img)
st.text("Similarity percentage="+str(round(book_list_index[1]*100,2)))
st.text("-------------------------------------")
st.text("SYNOPSIS")
st.markdown(data.iloc[book_list_index[0]-1]['description'])
else:
st.text("Book recommended-"+data.iloc[book_list_index[0]-1]['title'])
response = requests.get(str(data.iloc[book_list_index[0]-1]['img']))
img = Image.open(BytesIO(response.content))
st.image(img)
st.text("Similarity percentage="+str(round(book_list_index[1]*100,2)))
st.text("-------------------------------------")
st.text("SYNOPSIS")
st.markdown(data.iloc[book_list_index[0]-1]['description'])