Game-recommender / fast.py
AyushAI14's picture
Upload 10 files
24ec8c3 verified
from fastapi import FastAPI , Request,Form
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import pickle
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
with open('model/homedf.pkl', 'rb') as file:
homedf = pickle.load(file)
with open('model/Maindf.pkl', 'rb') as file:
Maindf = pickle.load(file)
#Helper functions -------------------------------------------------------------------------------------
def genreRecommender(genre):
if genre in Maindf['genre'].values:
return Maindf[Maindf['genre'] == genre]
else:
return "no genre found"
def titleCheck(title):
if title.lower() in Maindf['title'].str.lower().values:
return True
else:
return False
# titleCheck('ENLISTeD')
def titlerecommend(title):
titleChe = titleCheck(title)
# print(titleChe)
if titleChe is True:
genre = Maindf.loc[Maindf['title'].str.lower() == title.lower(), 'genre'].values[0]
# print(f"The genre for '{title}' is: {genre}")
if genre in Maindf['genre'].values:
return Maindf[Maindf['genre'] == genre]
else:
print("No title found")
# titlerecommend('ENLISTeD')
# -------------------------------------------------------------------------------------
@app.get('/')
def home(request:Request):
return templates.TemplateResponse("home.html",
{'request' : request,
'title' : list(homedf["title"].values),
'image' : list(homedf["thumbnail"].values),
'short_description' : list(homedf["short_description"].values),
'game_url' : list(homedf["game_url"].values),
'genre' : list(homedf["genre"].values),
'platform' : list(homedf["platform"].values),
'publisher' : list(homedf["publisher"].values),
'developer' : list(homedf["developer"].values),
'release_date' : list(homedf["release_date"].values),
'freetogame_profile_url' : list(homedf["freetogame_profile_url"].values),
})
@app.get("/recommend")
def recommend(request: Request): # Include the 'request' parameter
return templates.TemplateResponse("recommend.html", {"request": request})
# @app.post("/UserRecommend")
# def genre(request: Request,UserinputGenre : str = Form(...)):
# filterdata = genreRecommender(UserinputGenre)
# games = filterdata.to_dict(orient="records")
# return templates.TemplateResponse('recommend.html', {'games': games, 'UserinputGenre':UserinputGenre,'request': request})
@app.post("/UserRecommend")
def title(request: Request,user_input_title : str = Form(...)):
filterTitleDataframe = titlerecommend(user_input_title)
if filterTitleDataframe.empty:
games = []
else:
games = filterTitleDataframe.to_dict(orient="records")
return templates.TemplateResponse('recommend.html', {'games': games, 'user_input_title':user_input_title,'request': request})