Update 2 files

- /src/routes/movies.js
- /src/config/tmdb.js
This commit is contained in:
2025-01-16 16:21:32 +00:00
parent 3cfb587814
commit fe7399ef9f
2 changed files with 36 additions and 26 deletions

View File

@@ -199,19 +199,17 @@ class TMDBClient {
} }
async getMoviesByGenre(genreId, page = 1) { async getMoviesByGenre(genreId, page = 1) {
const pageNum = parseInt(page, 10) || 1; return this.makeRequest('GET', '/discover/movie', {
const response = await this.makeRequest('GET', '/discover/movie', { params: {
page: pageNum, with_genres: genreId,
with_genres: genreId, page,
sort_by: 'popularity.desc' sort_by: 'popularity.desc',
'vote_count.gte': 100,
include_adult: false
}
}); });
const data = response.data;
data.results = this.filterAndProcessResults(data.results, 'movie');
return data;
} }
// TV Show methods
async getPopularTVShows(page = 1) { async getPopularTVShows(page = 1) {
const pageNum = parseInt(page, 10) || 1; const pageNum = parseInt(page, 10) || 1;
console.log('Getting popular TV shows:', { page: pageNum }); console.log('Getting popular TV shows:', { page: pageNum });

View File

@@ -664,33 +664,43 @@ router.get('/:id/videos', async (req, res) => {
router.get('/genre/:id', async (req, res) => { router.get('/genre/:id', async (req, res) => {
try { try {
const { id } = req.params; const { id } = req.params;
const { page } = req.query; const { page = 1 } = req.query;
const pageNum = parseInt(page, 10) || 1;
if (pageNum < 1) { console.log('Fetching movies by genre:', { id, page });
return res.status(400).json({ error: 'Page must be greater than 0' });
}
const movies = await req.tmdb.getMoviesByGenre(id, pageNum); const response = await req.tmdb.makeRequest('get', '/discover/movie', {
params: {
if (!movies || !movies.results) { with_genres: id,
return res.status(404).json({ error: 'Movies not found for this genre' }); page,
} language: 'ru-RU',
'vote_count.gte': 100,
'vote_average.gte': 1,
sort_by: 'popularity.desc',
include_adult: false
}
});
const formattedResults = movies.results.map(movie => ({ console.log('Movies by genre response:', {
page: response.data.page,
total_results: response.data.total_results,
results_count: response.data.results?.length
});
// Форматируем даты в результатах
const formattedResults = response.data.results.map(movie => ({
...movie, ...movie,
release_date: formatDate(movie.release_date) release_date: movie.release_date ? formatDate(movie.release_date) : undefined
})); }));
res.json({ res.json({
...movies, ...response.data,
results: formattedResults results: formattedResults
}); });
} catch (error) { } catch (error) {
console.error('Get movies by genre error:', error); console.error('Error fetching movies by genre:', error.response?.data || error.message);
res.status(500).json({ res.status(500).json({
error: 'Failed to fetch movies by genre', error: 'Failed to fetch movies by genre',
details: error.message details: error.response?.data?.status_message || error.message
}); });
} }
}); });
@@ -708,13 +718,15 @@ router.get('/genre/:id', async (req, res) => {
*/ */
router.get('/genres', async (req, res) => { router.get('/genres', async (req, res) => {
try { try {
console.log('Fetching genres...');
const response = await req.tmdb.makeRequest('get', '/genre/movie/list', { const response = await req.tmdb.makeRequest('get', '/genre/movie/list', {
language: 'ru-RU' language: 'ru-RU'
}); });
console.log('Genres response:', response.data);
res.json(response.data); res.json(response.data);
} catch (error) { } catch (error) {
console.error('Error fetching genres:', error); console.error('Error fetching genres:', error.response?.data || error.message);
res.status(500).json({ res.status(500).json({
error: 'Failed to fetch genres', error: 'Failed to fetch genres',
details: error.response?.data?.status_message || error.message details: error.response?.data?.status_message || error.message