-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenre-movies.js
122 lines (108 loc) · 4.42 KB
/
genre-movies.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
const moviesgenrebtn= document.getElementById('movies-genre');
const moviesgenreleftbtn = document.getElementById('moviesgenreleftbtn');
const moviesgenrerightbtn = document.getElementById('moviesgenrerightbtn');
// Scroll left
moviesgenreleftbtn.addEventListener('click', () => {
moviesgenrebtn.scrollBy({ left: -300, behavior: 'smooth' });
});
// Scroll right
moviesgenrerightbtn.addEventListener('click', () => {
moviesgenrebtn.scrollBy({ left: 300, behavior: 'smooth' });
});
const apiKeytmdb ='d6e256dc1cc661c0bf793767a74948df'; // Replace with your TMDB API key
const moviegenre = document.getElementById('movies-genre'); // Container for movies
let page2 = 1; // To handle endless scrolling
let currentGenre = ''; // Keep track of the current genre
document.addEventListener('DOMContentLoaded', () => {
const buttons = document.querySelectorAll('.genre-button');
buttons.forEach(button => {
button.addEventListener('click', () => {
currentGenre = button.dataset.genre;
page2 = 1;
moviegenre.innerHTML = ''; // Clear existing movie content
fetchMoviesByGenre(currentGenre, page2);
});
});
});
window.addEventListener('scroll', () => {
if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 100) {
// Load more content when scrolling to the bottom
fetchMoviesByGenre(currentGenre, ++page2);
}
});
function fetchMoviesByGenre(genre, page2) {
const movieUrl = `https://api.themoviedb.org/3/discover/movie?api_key=${apiKeytmdb}&with_genres=${genre}&page2=${page2}`;
fetch(movieUrl)
.then(response => response.json())
.then(moviesData => {
displayMovies2(moviesData.results);
})
.catch(error => console.error('Error fetching movies:', error));
}
function displayMovies2(movies) {
if (!movies || movies.length === 0) {
moviegenre.innerHTML = `<p>No movies found.</p>`;
return;
}
movies.forEach(movie => {
const genres = movie.genre_ids.map(id => getGenreName(id)).join(', ');
const title = movie.title;
const releaseDate = movie.release_date || 'N/A';
const runtime = movie.runtime || 'N/A';
const language = movie.original_language ? movie.original_language.toUpperCase() : 'N/A';
const popularity = movie.popularity ? movie.popularity.toFixed(1) : 'N/A';
const movieCard = document.createElement('div');
movieCard.classList.add('genre-movie-flip-card');
const posterImage = movie.poster_path
? `<img src="https://image.tmdb.org/t/p/w500${movie.poster_path}" alt="${title}">`
: '<div class="no-image">No Image Available</div>';
movieCard.innerHTML = `
<div class="genre-movie-card-inner">
<div class="genre-movie-front">
<p class="title">Title🎬:${title} [${new Date(releaseDate).getFullYear()}]</p>
${posterImage}
</div>
<div class="genre-movie-back">
<h3 style="color:red;">Title🎬:${title} [${new Date(releaseDate).getFullYear()}]</h3>
<p>Rating ⭐️: ${movie.vote_average} / 10</p>
<p>${movie.vote_average} based on ${movie.vote_count} user ratings</p>
<p>Release Info: ${releaseDate}</p>
<p>Genre: ${genres}</p>
<p>Runtime: ${runtime}</p>
<p>Language: ${language}</p>
<p>Popularity: ${popularity}</p>
<p>Story Line: ${movie.overview}</p>
<a href="https://www.themoviedb.org/movie/${movie.id}" target="_blank">Read More</a>
</div>
</div>
`;
moviegenre.appendChild(movieCard);
movieCard.addEventListener('click', () => {
movieCard.classList.toggle('genre-flip');
});
});
}
function getGenreName(id) {
const genreMap = {
28: 'Action',
12: 'Adventure',
16: 'Animation',
35: 'Comedy',
80: 'Crime',
99: 'Documentary',
18: 'Drama',
10751: 'Family',
14: 'Fantasy',
36: 'History',
27: 'Horror',
10402: 'Music',
9648: 'Mystery',
10749: 'Romance',
878: 'Science Fiction',
10770: 'TV Movie',
53: 'Thriller',
10752: 'War',
37: 'Western',
};
return genreMap[id] || 'Unknown';
}