|
|
|
@ -127,12 +127,14 @@ discoverRoutes.get('/movies', async (req, res, next) => {
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
keywords: keywordData,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(req) =>
|
|
|
|
|
req.tmdbId === result.id && req.mediaType === MediaType.MOVIE
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(req) =>
|
|
|
|
|
req.tmdbId === result.id && req.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -180,12 +182,14 @@ discoverRoutes.get<{ language: string }>(
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
language,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(req) =>
|
|
|
|
|
req.tmdbId === result.id && req.mediaType === MediaType.MOVIE
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(req) =>
|
|
|
|
|
req.tmdbId === result.id && req.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -237,12 +241,14 @@ discoverRoutes.get<{ genreId: string }>(
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
genre,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(req) =>
|
|
|
|
|
req.tmdbId === result.id && req.mediaType === MediaType.MOVIE
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(req) =>
|
|
|
|
|
req.tmdbId === result.id && req.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -284,12 +290,14 @@ discoverRoutes.get<{ studioId: string }>(
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
studio: mapProductionCompany(studio),
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -332,12 +340,14 @@ discoverRoutes.get('/movies/upcoming', async (req, res, next) => {
|
|
|
|
|
page: data.page,
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -404,11 +414,14 @@ discoverRoutes.get('/tv', async (req, res, next) => {
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
keywords: keywordData,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) => med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -456,12 +469,14 @@ discoverRoutes.get<{ language: string }>(
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
language,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -513,12 +528,14 @@ discoverRoutes.get<{ genreId: string }>(
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
genre,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -560,12 +577,14 @@ discoverRoutes.get<{ networkId: string }>(
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
network: mapNetwork(network),
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -608,11 +627,14 @@ discoverRoutes.get('/tv/upcoming', async (req, res, next) => {
|
|
|
|
|
page: data.page,
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) => med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
@ -637,35 +659,36 @@ discoverRoutes.get('/trending', async (req, res, next) => {
|
|
|
|
|
page: Number(req.query.page),
|
|
|
|
|
language: (req.query.language as string) ?? req.locale,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const media = await Media.getRelatedMedia(
|
|
|
|
|
data.results.map((result) => result.id)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return res.status(200).json({
|
|
|
|
|
page: data.page,
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
isMovie(result)
|
|
|
|
|
? mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
: isPerson(result)
|
|
|
|
|
? mapPersonResult(result)
|
|
|
|
|
: isCollection(result)
|
|
|
|
|
? mapCollectionResult(result)
|
|
|
|
|
: mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) => {
|
|
|
|
|
return isMovie(result)
|
|
|
|
|
? mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id &&
|
|
|
|
|
med.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
: isPerson(result)
|
|
|
|
|
? mapPersonResult(result)
|
|
|
|
|
: isCollection(result)
|
|
|
|
|
? mapCollectionResult(result)
|
|
|
|
|
: mapTvResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.TV
|
|
|
|
|
)
|
|
|
|
|
);
|
|
|
|
|
})
|
|
|
|
|
),
|
|
|
|
|
});
|
|
|
|
|
} catch (e) {
|
|
|
|
@ -700,12 +723,14 @@ discoverRoutes.get<{ keywordId: string }>(
|
|
|
|
|
page: data.page,
|
|
|
|
|
totalPages: data.total_pages,
|
|
|
|
|
totalResults: data.total_results,
|
|
|
|
|
results: data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
results: await Promise.all(
|
|
|
|
|
data.results.map((result) =>
|
|
|
|
|
mapMovieResult(
|
|
|
|
|
result,
|
|
|
|
|
media.find(
|
|
|
|
|
(med) =>
|
|
|
|
|
med.tmdbId === result.id && med.mediaType === MediaType.MOVIE
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
),
|
|
|
|
|