Watchonlinemovies.com ✔ 〈Official〉
const recommendMovies = async (userId) => { const user = await User.findById(userId).populate('movieHistory').populate('ratings'); const userRatings = user.ratings; const userHistory = user.movieHistory;
module.exports = Movie; // recommendation.algorithm.js const User = require('./user.model'); const Movie = require('./movie.model'); watchonlinemovies.com
// Calculate similarity between users const similarUsers = await User.find().populate('ratings'); const similarities = similarUsers.map((similarUser) => { const similarUserRatings = similarUser.ratings; const similarity = calculateSimilarity(userRatings, similarUserRatings); return { user: similarUser, similarity }; }); const recommendMovies = async (userId) => { const
// Get movies rated by similar users const recommendedMovies = []; similarities.forEach((similarity) => { const similarUser = similarity.user; const movies = similarUser.movieHistory; movies.forEach((movie) => { if (!userHistory.includes(movie)) { recommendedMovies.push(movie); } }); }); const recommendMovies = async (userId) =>
module.exports = recommendMovies; // api.js const express = require('express'); const router = express.Router(); const recommendMovies = require('./recommendation.algorithm');
// Return top 5 recommended movies return recommendedMovies.slice(0, 5); };
router.get('/recommendations', async (req, res) => { const userId = req.query.userId; const recommendedMovies = await recommendMovies(userId); res.json(recommendedMovies); });