'use strict'; import { api_key, imageBaseURL, fetchDataFromServer } from "./api.js"; import { sidebar } from "./sidebar.js"; import { createMovieCard } from "./movie-card.js"; import { search } from "./search.js"; const movieId = window.localStorage.getItem("movieId"); const pageContent = document.querySelector("[page-content]"); sidebar(); const getGenres = function (genreList) { const newGenreList = []; for (const { name } of genreList) newGenreList.push(name); return newGenreList.join(", "); } const getCasts = function (castList) { const newCastList = []; for (let i = 0, len = castList.length; i < len && i < 10; i++) { const { name } = castList[i]; newCastList.push(name); } return newCastList.join(", "); } const getDirectors = function (crewList) { const directors = crewList.filter(({ job }) => job === "Director"); const directorList = []; for (const { name } of directors) directorList.push(name); return directorList.join(", "); } const filterVideos = function (videoList) { return videoList.filter(({ type, site }) => (type === "Trailer" || type === "Teaser") && site === "YouTube"); } fetchDataFromServer(`https://api.themoviedb.org/3/movie/${movieId}?api_key=${api_key}&append_to_response=casts,videos,images,releases`, function (movie) { const { backdrop_path, poster_path, title, release_date, runtime, vote_average, releases: { countries: [{ certification } = { certification: "N/A" }] }, genres, overview, casts: { cast, crew }, videos: { results: videos } } = movie; document.title = `${title} - TD`; const movieDetail = document.createElement("div"); movieDetail.classList.add("movie-detail"); movieDetail.innerHTML = `
${title} poster

${title}

rating ${vote_average.toFixed(1)}
${runtime}m
${release_date?.split("-")[0] ?? "Not Released"}
${certification}

${getGenres(genres)}

${overview}

Trailers and Clips

`; for (const { key, name } of filterVideos(videos)) { const videoCard = document.createElement("div"); videoCard.classList.add("video-card"); videoCard.innerHTML = ` `; movieDetail.querySelector(".slider-inner").appendChild(videoCard); } pageContent.appendChild(movieDetail); fetchDataFromServer(`https://api.themoviedb.org/3/movie/${movieId}/recommendations?api_key=${api_key}&page=1`, addSuggestedMovies); }); const addSuggestedMovies = function ({ results: movieList }, title) { const movieListElem = document.createElement("section"); movieListElem.classList.add("movie-list"); movieListElem.ariaLabel = "You May Also Like"; movieListElem.innerHTML = ` `; for (const movie of movieList) { const movieCard = createMovieCard(movie); movieListElem.querySelector(".slider-inner").appendChild(movieCard); } pageContent.appendChild(movieListElem); } search();