mirror of
https://gitlab.com/foxixus/neomovies-api.git
synced 2025-10-28 01:48:51 +05:00
Update 2 files
- /src/routes/movies.js - /src/config/tmdb.js
This commit is contained in:
@@ -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 });
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user