mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-07-06 09:13:02 +02:00
Dodanie API do rekomendacji
This commit is contained in:
parent
52e509404e
commit
efdad74b3d
@ -3,7 +3,7 @@ import psycopg2
|
|||||||
import pandas
|
import pandas
|
||||||
import json
|
import json
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
|
import requests
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
db_connector = None
|
db_connector = None
|
||||||
@ -16,7 +16,7 @@ def error_decorator(fun):
|
|||||||
fun(*args, **kwargs)
|
fun(*args, **kwargs)
|
||||||
except psycopg2.DatabaseError:
|
except psycopg2.DatabaseError:
|
||||||
return jsonify({"status": "Something... unexpected has occured :sweat_smile:"}), 500
|
return jsonify({"status": "Something... unexpected has occured :sweat_smile:"}), 500
|
||||||
|
|
||||||
return inner1
|
return inner1
|
||||||
|
|
||||||
@app.route("/", methods=["GET"])
|
@app.route("/", methods=["GET"])
|
||||||
@ -55,8 +55,14 @@ def add_user(oauth_ID, username):
|
|||||||
def get_recommendations(oauth_ID):
|
def get_recommendations(oauth_ID):
|
||||||
#request od frontu na rekomendacje
|
#request od frontu na rekomendacje
|
||||||
#wysyłanie requestu do AI API o rekomendacje dla usera
|
#wysyłanie requestu do AI API o rekomendacje dla usera
|
||||||
#przesłanie danych do
|
#przesłanie danych do
|
||||||
return jsonify({"movies": ["3", "Wiedźmin 3", "Najlepszy."]}), 200
|
|
||||||
|
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"])
|
@app.route("/api/v3/get_movie/<int:movie_ID>", methods=["GET"])
|
||||||
# @error_decorator
|
# @error_decorator
|
||||||
|
|||||||
@ -3,6 +3,9 @@ import numpy as np
|
|||||||
from ast import literal_eval
|
from ast import literal_eval
|
||||||
from sklearn.feature_extraction.text import CountVectorizer
|
from sklearn.feature_extraction.text import CountVectorizer
|
||||||
from sklearn.metrics.pairwise import cosine_similarity
|
from sklearn.metrics.pairwise import cosine_similarity
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
import os
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_director(x):
|
def get_director(x):
|
||||||
@ -104,16 +107,30 @@ class MovieRecommender:
|
|||||||
if recommended_id in movie_ids:
|
if recommended_id in movie_ids:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if recommended_movies.get(recommended_id) is None:
|
if recommended_movies.get(int(recommended_id)) is None:
|
||||||
recommended_movies[recommended_id] = sim_score / len(movie_ids)
|
recommended_movies[int(recommended_id)] = float(round((sim_score / len(movie_ids)), 4))
|
||||||
else:
|
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
|
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:
|
# Przykładowe użycie:
|
||||||
if __name__ == "__main__":
|
# if __name__ == "__main__":
|
||||||
recommender = MovieRecommender()
|
# recommender = MovieRecommender()
|
||||||
recommender.fit('datasets/tmdb_5000_credits.csv', 'datasets/tmdb_5000_movies.csv')
|
# recommender.fit('datasets/tmdb_5000_credits.csv', 'datasets/tmdb_5000_movies.csv')
|
||||||
recommendations = recommender.get_recommendations([49026, 155, 312113])
|
# recommendations = recommender.get_recommendations([49026, 155, 312113])
|
||||||
print(recommendations)
|
# print(recommendations)
|
||||||
|
|||||||
12
movie_recommendations/test.http
Normal file
12
movie_recommendations/test.http
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
###
|
||||||
|
|
||||||
|
POST http://127.0.0.1:5000/api/v3/AI_recommendations
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
[
|
||||||
|
49026,
|
||||||
|
155,
|
||||||
|
312113
|
||||||
|
]
|
||||||
|
|
||||||
|
###
|
||||||
Loading…
Reference in New Issue
Block a user