//Populate dropdown menu with all the available genres
const generateGenreDropdown = (genres) => {
const select = document.getElementById('genres');
for (const genre of genres) {
let option = document.createElement('option');
option.value= genre["id"];
option.text = genre["name"];
select.appendChild(option);
}
};
//return the current genre selection from the dropdown menu
const getSelectedGenre = () =>{
const selectedGenre = document.getElementById('genres').value;
return selectedGenre;
};
//Display the like and dislike buttons on the page
const showBtns = () => {
const btnDiv = document.getElementById('likeOrDislike');
btnDiv.removeAttribute('hidden');
};
//Clear the current movie from the screen
const clearCurrentMovie = () => {
const moviePosterDiv = document.getElementById('moviePoster');
const movieTextDiv = document.getElementById('movieText');
moviePosterDiv.innerHTML = '';
movieTextDiv.innerHTML = '';
};
//clear the movie and get another random moview
const resetMovie = () => {
clearCurrentMovie();
showRandomMovie(); //should make this function in script.js
};
const createMoviePoster = (posterPath) => {
const moviePosterUrl = `https://image.tmdb.org/t/p/original/${posterPath}`;
const posterImg = document.createElement('img');
posterImg.setAttribute('src', moviePosterUrl);
posterImg.setAttribute('id', 'moviePoster');
return posterImg;
};
//create HTML for movie overview
const createMovieOverview = (overview) => {
const overviewParagraph = document.createElement('p');
overviewParagraph.setAttribute('id', 'movieOverview');
overviewParagraph.innerHTML = overview;
};
//returns a random movie from the first page of movies
const getRandomMovie = (movies) => {
const randomIndex = Math.floor(Math.random() * movies.length);
const randomMovie = movies[randomIndex];
return randomMovie;
};
//display the movie
const displayMovie = (movieInfo) => {
const moviePosterDiv = document.getElementById('moviePoster');
const movieTextDiv = document.getElementById('movieText');
const likeBtn = document.getElementById('like');
const dislikeBtn = document.getElementById('dislike');
const moviePoster = createMoviePoster(movieInfo.poster_path);
const titleHeader = createMovieTitle(movieInfo.title);
const overviewText = createMovieOverview(movieInfo.overview);
moviePosterDiv.appendChild(moviePoster);
movieTextDiv.appendChild(titleHeader);
movieTextDiv.appendChild(overviewText);
showBtns();
likeBtn.onclick = resetMovie;
dislikeBtn.onclick = resetMovie;
};
const tmdbKey = '431b4017e0612f761b3df8c0a6df23cf';
const tmdbBaseUrl = 'https://api.themoviedb.org/3';
const playBtn = document.getElementById('playButton');
const getGenres = async () => {
const genreRequestEndpoint = '/genre/movie/list';
const requestParams = `?api_key=${tmdbKey}`;
const urlToFetch = tmdbBaseUrl + genreRequestEndpoint + requestParams;
try {
const response = await fetch(urlToFetch);
if (response.ok){
const jsonResponse = await response.json();
const genres = jsonResponse["genres"];
return genres;
}
} catch(e){
console.log(e);
}
};
const getMovies = async() => {
const selectedGenre = getSelectedGenre();
const discoverMovieEndpoint = '/discover/movie';
const requestParams = `?api_key=${tmdbKey}&with_genres=${selectedGenre}`;
const urlToFetch = tmdbBaseUrl + discoverMovieEndpoint + requestParams;
try {
const response = await fetch(urlToFetch);
if(response.ok) {
const jsonResponse = await response.json();
const movies = jsonResponse.results;
return movies;
}
} catch(e){console.log(e);}
};
const getMovieInfo = async (movie) => {
const movieId = movie.id;
const movieEndpoint = `/movie/${movieId}`;
const requestParams = `?api_key=${tmdbKey}`;
const urlToFetch = tmdbBaseUrl + movieEndpoint + requestParams;
try {
if (response.ok){
const jsonResponse = await response.json();
const movieInfo = jsonResponse.results;
return movieInfo;
}}
catch(error){console.log(error);}
};
// Gets a list of movies and ultimately displays the info of a random movie from the list
const showRandomMovie = async () => {
const movieInfo = document.getElementById('movieInfo');
if (movieInfo.childNodes.length > 0) {
clearCurrentMovie();
};
const movies = await getMovies();
const randomMovie = getRandomMovie(movies);
const info= await getMovieInfo(randomMovie);
displayMovie(info);
};
getGenres().then(generateGenreDropdown);
playBtn.onclick = showRandomMovie();
It’s not working. When I press Play Button. Nothing happens. Plz help!