mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2026-01-03 21:37:42 -05:00
fix: address unhandled promise rejections & bump node to v16.13 (#2398)
* fix: unhandled promise rejections * build(deps): bump node from 14.18 to 16.13 * fix: unhandled promise rejection in new Plex users endpoint * fix: build error Co-authored-by: Ryan Cohen <ryan@sct.dev>
This commit is contained in:
@@ -21,104 +21,156 @@ tvRoutes.get('/:id', async (req, res, next) => {
|
||||
|
||||
return res.status(200).json(mapTvDetails(tv, media));
|
||||
} catch (e) {
|
||||
logger.error('Failed to get tv show', {
|
||||
logger.debug('Something went wrong retrieving series', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
tvId: req.params.id,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve series.',
|
||||
});
|
||||
return next({ status: 404, message: 'TV Show does not exist' });
|
||||
}
|
||||
});
|
||||
|
||||
tvRoutes.get('/:id/season/:seasonNumber', async (req, res) => {
|
||||
tvRoutes.get('/:id/season/:seasonNumber', async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
const season = await tmdb.getTvSeason({
|
||||
tvId: Number(req.params.id),
|
||||
seasonNumber: Number(req.params.seasonNumber),
|
||||
language: req.locale ?? (req.query.language as string),
|
||||
});
|
||||
try {
|
||||
const season = await tmdb.getTvSeason({
|
||||
tvId: Number(req.params.id),
|
||||
seasonNumber: Number(req.params.seasonNumber),
|
||||
language: req.locale ?? (req.query.language as string),
|
||||
});
|
||||
|
||||
return res.status(200).json(mapSeasonWithEpisodes(season));
|
||||
return res.status(200).json(mapSeasonWithEpisodes(season));
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving season', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
tvId: req.params.id,
|
||||
seasonNumber: req.params.seasonNumber,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve season.',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
tvRoutes.get('/:id/recommendations', async (req, res) => {
|
||||
tvRoutes.get('/:id/recommendations', async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
const results = await tmdb.getTvRecommendations({
|
||||
tvId: Number(req.params.id),
|
||||
page: Number(req.query.page),
|
||||
language: req.locale ?? (req.query.language as string),
|
||||
});
|
||||
try {
|
||||
const results = await tmdb.getTvRecommendations({
|
||||
tvId: Number(req.params.id),
|
||||
page: Number(req.query.page),
|
||||
language: req.locale ?? (req.query.language as string),
|
||||
});
|
||||
|
||||
const media = await Media.getRelatedMedia(
|
||||
results.results.map((result) => result.id)
|
||||
);
|
||||
const media = await Media.getRelatedMedia(
|
||||
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) =>
|
||||
mapTvResult(
|
||||
result,
|
||||
media.find(
|
||||
(req) => req.tmdbId === result.id && req.mediaType === MediaType.TV
|
||||
return res.status(200).json({
|
||||
page: results.page,
|
||||
totalPages: results.total_pages,
|
||||
totalResults: results.total_results,
|
||||
results: results.results.map((result) =>
|
||||
mapTvResult(
|
||||
result,
|
||||
media.find(
|
||||
(req) => req.tmdbId === result.id && req.mediaType === MediaType.TV
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
});
|
||||
),
|
||||
});
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving series recommendations', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
tvId: req.params.id,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve series recommendations.',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
tvRoutes.get('/:id/similar', async (req, res) => {
|
||||
tvRoutes.get('/:id/similar', async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
const results = await tmdb.getTvSimilar({
|
||||
tvId: Number(req.params.id),
|
||||
page: Number(req.query.page),
|
||||
language: req.locale ?? (req.query.language as string),
|
||||
});
|
||||
try {
|
||||
const results = await tmdb.getTvSimilar({
|
||||
tvId: Number(req.params.id),
|
||||
page: Number(req.query.page),
|
||||
language: req.locale ?? (req.query.language as string),
|
||||
});
|
||||
|
||||
const media = await Media.getRelatedMedia(
|
||||
results.results.map((result) => result.id)
|
||||
);
|
||||
const media = await Media.getRelatedMedia(
|
||||
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) =>
|
||||
mapTvResult(
|
||||
result,
|
||||
media.find(
|
||||
(req) => req.tmdbId === result.id && req.mediaType === MediaType.TV
|
||||
return res.status(200).json({
|
||||
page: results.page,
|
||||
totalPages: results.total_pages,
|
||||
totalResults: results.total_results,
|
||||
results: results.results.map((result) =>
|
||||
mapTvResult(
|
||||
result,
|
||||
media.find(
|
||||
(req) => req.tmdbId === result.id && req.mediaType === MediaType.TV
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
});
|
||||
),
|
||||
});
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving similar series', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
tvId: req.params.id,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve similar series.',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
tvRoutes.get('/:id/ratings', async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
const rtapi = new RottenTomatoes();
|
||||
|
||||
const tv = await tmdb.getTvShow({
|
||||
tvId: Number(req.params.id),
|
||||
});
|
||||
try {
|
||||
const tv = await tmdb.getTvShow({
|
||||
tvId: Number(req.params.id),
|
||||
});
|
||||
|
||||
if (!tv) {
|
||||
return next({ status: 404, message: 'TV Show does not exist' });
|
||||
const rtratings = await rtapi.getTVRatings(
|
||||
tv.name,
|
||||
tv.first_air_date ? Number(tv.first_air_date.slice(0, 4)) : undefined
|
||||
);
|
||||
|
||||
if (!rtratings) {
|
||||
return next({
|
||||
status: 404,
|
||||
message: 'Rotten Tomatoes ratings not found.',
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(200).json(rtratings);
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving series ratings', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
tvId: req.params.id,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve series ratings.',
|
||||
});
|
||||
}
|
||||
|
||||
const rtratings = await rtapi.getTVRatings(
|
||||
tv.name,
|
||||
tv.first_air_date ? Number(tv.first_air_date.slice(0, 4)) : undefined
|
||||
);
|
||||
|
||||
if (!rtratings) {
|
||||
return next({ status: 404, message: 'Unable to retrieve ratings' });
|
||||
}
|
||||
|
||||
return res.status(200).json(rtratings);
|
||||
});
|
||||
|
||||
export default tvRoutes;
|
||||
|
||||
Reference in New Issue
Block a user