mirror of
https://github.com/sct/overseerr.git
synced 2025-09-17 17:24:35 +02:00
feat(frontend/api): movie recommendations/similar request and frontend detail page update
This commit is contained in:
@@ -2,6 +2,7 @@ import { Router } from 'express';
|
||||
import TheMovieDb from '../api/themoviedb';
|
||||
import { mapMovieDetails } from '../models/Movie';
|
||||
import { MediaRequest } from '../entity/MediaRequest';
|
||||
import { mapMovieResult } from '../models/Search';
|
||||
|
||||
const movieRoutes = Router();
|
||||
|
||||
@@ -15,4 +16,54 @@ movieRoutes.get('/:id', async (req, res) => {
|
||||
return res.status(200).json(mapMovieDetails(movie, request));
|
||||
});
|
||||
|
||||
movieRoutes.get('/:id/recommendations', async (req, res) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
const results = await tmdb.getMovieRecommendations({
|
||||
movieId: Number(req.params.id),
|
||||
page: Number(req.query.page),
|
||||
});
|
||||
|
||||
const requests = await MediaRequest.getRelatedRequests(
|
||||
results.results.map((result) => result.id)
|
||||
);
|
||||
|
||||
return res.status(200).json({
|
||||
page: results.page,
|
||||
totalPages: results.total_pages,
|
||||
totalResults: results.total_results,
|
||||
results: results.results.map((result) =>
|
||||
mapMovieResult(
|
||||
result,
|
||||
requests.find((req) => req.mediaId === result.id)
|
||||
)
|
||||
),
|
||||
});
|
||||
});
|
||||
|
||||
movieRoutes.get('/:id/similar', async (req, res) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
const results = await tmdb.getMovieSimilar({
|
||||
movieId: Number(req.params.id),
|
||||
page: Number(req.query.page),
|
||||
});
|
||||
|
||||
const requests = await MediaRequest.getRelatedRequests(
|
||||
results.results.map((result) => result.id)
|
||||
);
|
||||
|
||||
return res.status(200).json({
|
||||
page: results.page,
|
||||
totalPages: results.total_pages,
|
||||
totalResults: results.total_results,
|
||||
results: results.results.map((result) =>
|
||||
mapMovieResult(
|
||||
result,
|
||||
requests.find((req) => req.mediaId === result.id)
|
||||
)
|
||||
),
|
||||
});
|
||||
});
|
||||
|
||||
export default movieRoutes;
|
||||
|
Reference in New Issue
Block a user