Dodanie API do rekomendacji

This commit is contained in:
gzub04 2024-06-15 18:29:19 +02:00
parent 52e509404e
commit efdad74b3d
3 changed files with 47 additions and 12 deletions

View File

@ -3,7 +3,7 @@ import psycopg2
import pandas
import json
from configparser import ConfigParser
import requests
app = Flask(__name__)
db_connector = None
@ -16,7 +16,7 @@ def error_decorator(fun):
fun(*args, **kwargs)
except psycopg2.DatabaseError:
return jsonify({"status": "Something... unexpected has occured :sweat_smile:"}), 500
return inner1
@app.route("/", methods=["GET"])
@ -55,8 +55,14 @@ def add_user(oauth_ID, username):
def get_recommendations(oauth_ID):
#request od frontu na rekomendacje
#wysyłanie requestu do AI API o rekomendacje dla usera
#przesłanie danych do
return jsonify({"movies": ["3", "Wiedźmin 3", "Najlepszy."]}), 200
#przesłanie danych do
movies = [49026, 155, 312113] # mock values to be received from backend
url = 'http://localhost:8080/api/v3/AI_recommendations' # nie wiem, jakie powinno być url
response = requests.post(url,
json=movies,
headers={'Content-Type': 'application/json'})
return jsonify(response.json()), 200
@app.route("/api/v3/get_movie/<int:movie_ID>", methods=["GET"])
# @error_decorator

View File

@ -3,6 +3,9 @@ import numpy as np
from ast import literal_eval
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from flask import Flask, request, jsonify
import os
app = Flask(__name__)
def get_director(x):
@ -104,16 +107,30 @@ class MovieRecommender:
if recommended_id in movie_ids:
continue
if recommended_movies.get(recommended_id) is None:
recommended_movies[recommended_id] = sim_score / len(movie_ids)
if recommended_movies.get(int(recommended_id)) is None:
recommended_movies[int(recommended_id)] = float(round((sim_score / len(movie_ids)), 4))
else:
recommended_movies[recommended_id] += sim_score / len(movie_ids)
recommended_movies[int(recommended_id)] += float(round((sim_score / len(movie_ids)), 4))
return recommended_movies
recommender = MovieRecommender()
recommender.fit('movie_recommendations/datasets/tmdb_5000_credits.csv',
'movie_recommendations/datasets/tmdb_5000_movies.csv')
@app.route("/api/v3/AI_recommendations", methods=["POST"])
def AI_recommendations():
ids = request.get_json()
recommendations = recommender.get_recommendations(ids)
return jsonify(recommendations)
# Przykładowe użycie:
if __name__ == "__main__":
recommender = MovieRecommender()
recommender.fit('datasets/tmdb_5000_credits.csv', 'datasets/tmdb_5000_movies.csv')
recommendations = recommender.get_recommendations([49026, 155, 312113])
print(recommendations)
# if __name__ == "__main__":
# recommender = MovieRecommender()
# recommender.fit('datasets/tmdb_5000_credits.csv', 'datasets/tmdb_5000_movies.csv')
# recommendations = recommender.get_recommendations([49026, 155, 312113])
# print(recommendations)

View File

@ -0,0 +1,12 @@
###
POST http://127.0.0.1:5000/api/v3/AI_recommendations
Content-Type: application/json
[
49026,
155,
312113
]
###