diff --git a/backend/src/controllers/recommendation.js b/backend/src/controllers/recommendation.js index 2d965dc1db5637a2aee38a54ab32d363156afe20..9684f329ca20ac944eb0c287a21baad5121938c6 100644 --- a/backend/src/controllers/recommendation.js +++ b/backend/src/controllers/recommendation.js @@ -44,6 +44,14 @@ function recommendationForUser(user_login) { for (let i = 0; i < authors.length; i++) { fav_authors = authors[i][0]; //recuperer seulement l'auteur, pas le reste } + let actors = getAllElements(seen, getActors).slice(0,3); + for (let i = 0; i < actors.length; i++) { + fav_actors = actors[i][0]; //recuperer seulement l'acteur, pas le reste + } + let styles = getAllElements(seen, getStyles).slice(0,3); + for (let i = 0; i < styles.length; i++) { + fav_styles = styles[i][0]; //recuperer seulement le style, pas le reste + } @@ -78,10 +86,9 @@ function comparerLignes(a, b) { * renvoie une liste d'auteurs, avec leur nombre d'apparition dans la liste des films vus par un utilisateur, puis leur note moyenne * * @param {Movie[]} movies - Liste de film vus par un utilisateur. - * @param {string(Movie)} recupElement - Fonction qui recupere un element d'un film (pour generaliser allAutors à allElement). * @returns {[[string, Number, Number]]} - La liste des auteurs. */ -function getAllAuthors(movies, recupElement){ +function getAllAuthors(movies){ let authors = [[]]; //premier indice = couple auteur/nombre d'apparition/moyenne notes films, 2e indice: 0 auteur, 1 nbr apparition, 2 mpyenne films for (let i = 0; i < seen.length; i++) { @@ -107,10 +114,46 @@ function getAllAuthors(movies, recupElement){ return authors; } -function getAuthor(movie){ - return movie.author; +/** + * renvoie une liste d'acteurs/styles, avec leur nombre d'apparition dans la liste des films vus par un utilisateur, puis leur note moyenne + * + * @param {Movie[]} movies - Liste de film vus par un utilisateur. + * @param {string(Movie)} recupElement - Fonction qui recupere un element d'un film (pour generaliser à allElement) (acteurs ou styles). + * @returns {[[string, Number, Number]]} - La liste des auteurs. + */ +function getAllElement(movies, recupElement){ + let elements = [[]]; + //premier indice = couple element/nombre d'apparition/moyenne notes films, 2e indice: 0 auteur, 1 nbr apparition, 2 mpyenne films + for (let i = 0; i < seen.length; i++) { + let j = 0; + let found = false; + temp_elements = recupElement(seen[i]); + for (let h = 0; h < temp_elements.length; h++) { + while(j < elements.length && !found){ + if (elements[j][0] == recupElement(temp_elements[h])) { + found = true; + elements[j][1] += 1; + elements[j][2] += temp_elements[h].note; + } + j++; + } + if(!found){ + elements.append([recupElement(temp_elements[h]), 1, temp_elements[h].note]); + } + } + } + for (let i = 0; i < elements.length; i++) { + elements[i][2] /= elements[i][1]; + } + + elements.sort(comparerLignes); + return elements; } +/*function getAuthor(movie){ + return movie.author; +}*/ + function getActors(movie){ return movie.actors; }