Angel Hernandez
Juan David Reyes
José Ángel Soriano Soriano
Oscar Fuentes Esteves
Hiram Rodriguez Gomez
Yangetze González
Robinson Gonzalez
Maicol Hernandez
John Caballero
Juan Becerra
Ricardo Alfonso Chavez Vilcapoma
Fernando Francisco López Mauro
Guadalupe Monge Barale
Julian David Alzate Cuervo
tiken .
Dario Paladines
Eric Alvarez
Ricardo Alfonso Chavez Vilcapoma
Carlos Rodríguez
Juan Castro
Ricardo Alfonso Chavez Vilcapoma
Fernando Meneses
Ricardo Alfonso Chavez Vilcapoma
jose zuñiga
Jeaneth Tafur Huaman
Jonathan HERNANDEZ
Orlando Leyva acosta
Santiago Lopera Naranjo
Edgardo Andres Vargas Saenz
Juan Castro
Jonathan Alfonso
Andrés Camilo Salgado
Pablo Humberto Arriola Agudelo
Juan Castro
Daniel Alberto Méndez Pérez
Juan Castro
Para los que quieren generar la API key:
Gracias por el aporte n.n
me salvastes la vida, por que nunca lo explica el maestro...
Importante perderle el miedo a la documentación, yo sé que abruma de repente ver mucho texto y código.
JD lo hace ver fácil, pero si sabes que buscar, lo demás lo puedes ignorar... claro, hasta que algo falla.
De acuerdo. Desde hace varios cursos, he aprendido que la mejor manera de profundizar en el conocimiento es leyendo tanto la documentación como material adicional a las clases.
De hecho, pienso que en la mayoría de los casos es la mejor manera de aprender.
La URL base de las imágenes:
https://image.tmdb.org/t/p/w300/
Gracias!
De momento uso esta forma para agregar el html.
Despues vere que problemas hay con esa forma.
movies.forEach(movie => { trendingPreviewMoviesContainer.innerHTML += ` <div class="movie-container"> <img src="https://image.tmdb.org/t/p/w300${movie.poster_path}" class="movie-img" alt=${movie.title}/> </div> `; });```
Hola, tuviste problemas ??
Lo único malo de hacerlo así es que para eventos no reconoce los elementos de ese HTML 😪.
Asi va quedando mi diseño :D
La url para las imágenes de las pelis. Es así, según la documentación . Para crear una URL de imagen, necesitará 3 datos. El base_url, sizey file_path. Simplemente, combínelos todos y tendrá una URL completamente calificada. Aquí hay una URL de ejemplo:
https://image.tmdb.org/t/p/w500/8uO0gUM8aNqYLs1OsTBQiXu0fEv.jpg
Por eso nuestro código queda así
img.setAttribute('src', `https://image.tmdb.org/t/p/w300/${movie.poster_path}`);
gracias por tu ayuda , me funcionó
Enorme curso !!! Vamos a darle vida a Disney 💪🏼
Le agregue a mi estructura el titulo de la pelicula y la puntuacion 😊
si quieren ocultar la barra de navegacion Horizontal solo apliquen esta propiedad al css
.trendingPreview-movieList::-webkit-scrollbar { display: none; }
Gracias...pero si hago eso, no podré scrollear 😪
El nodo siguiente donde está contenido todas las imagenes debe estar fuera del forEach para que no seleccione dicho nodo cada vez que se pase por un elemento:
const rendingPreviewMoviesContainer = document.querySelector( '#trendingPreview .trendingPreview-movieList', );
. Repositorio del Commit
Spoiler: lo hacemos en algunas clases más adelante. :wink:
Ahí vamos...yo tomé el diseño del profe a manera de práctica, ya que al entrar a un trabajo, no se comienza un proyecto desde cero sino tenemos que acoplarnos a lo que se tiene hasta el momento.
Así que ya luego lo maquillaré cuando la funcionalidad esté hecha.
¿como enlazo la API key? me dice que sin el acces token no puedo. le agradeceira mucho si me ayudas
Saludos estimado Diego. Si ya tienes tu API KEY, en la clase 3 del curso el profesor muestra que lo puedes hacer mediante query parameters.
Les dejo mi función solución aplicando el método optimo de agregar varios nodos dado en el curso de manipulación del DOM.
const URL_API = 'https://api.themoviedb.org/3/trending/movie/day?api_key='+Api_key; const URL_IMG = 'https://image.tmdb.org/t/p/w300' async function getTrendingMoviesPreview(URL_API){ const res = await fetch(URL_API); const data = await res.json(); const movies = data.results; // console.log({data, movies}); const nodosMovies = movies.map(movie => { const divMovieContainer = document.createElement('DIV'); divMovieContainer.className = 'movie-container'; const imgMovieContainer = document.createElement('IMG'); imgMovieContainer.className = 'movie-img'; imgMovieContainer.setAttribute('alt', 'original_title'); imgMovieContainer.setAttribute('src', URL_IMG+movie.poster_path); divMovieContainer.appendChild(imgMovieContainer); return divMovieContainer; }); const trendingPreviewMovieList = document.querySelector('#trendingPreview .trendingPreview-movieList'); trendingPreviewMovieList.append(...nodosMovies); } getTrendingMoviesPreview(URL_API)
Juan DC lo explica tan bien que todo parece tan facil 😁
Pueda ser que muchos algunos no tengan una aplicación URL como le pide themoviedb a la hora de crear la API, Aquí. Le dejo lo que tienen que poner en ese campo. SOLO PONGAN: N/A
Yo agrego el html de esta forma.
movies.forEach(movie => { let htmlCode = ` <div class="movie-container"> <img src="https://image.tmdb.org/t/p/w300${movie.poster_path}" class="movie-img" alt="Nombre de la película"/> </div> ` trendingListeTemplate.push(htmlCode); }); trendingPreviewMovieList.innerHTML = trendingListeTemplate.join('')
Con el fin de probar diversos endpoints, cree la funcion de forma que tuviera los parametros por defecto que usa Juanda, pero dejando con la posibilidad de pasarle otras categorías, y tiempos:
const VERSION = '3' const API_BASE = `https://api.themoviedb.org/${VERSION}` async function getTrendingMoviesPreview(media_type='movie',time_window='day') { const response = await fetch(`${API_BASE}/trending/${media_type}/${time_window}?api_key=${API_KEY}`) const data = await response.json(); }
Qué diferencia hay existe si creo los elementos con insertAdjacentHTML.
movies.forEach(movie => { trendingPreviewMovieList.insertAdjacentHTML('beforeend', ` <div class='movie-container'> <img src='https://image.tmdb.org/t/p/w300/${movie.poster_path}' class='movie-img' alt='${movie.title}' /> </div> `) })
Es otra forma de llegar al mismo resultado. Personalmente también me gusta mucho. :D
Edgardo, yo intente hacer algo parecido, pero con innerHTML, pero no pude asignarle la función al hacer click en movie-container. Ya que no se puede seleccionar el elemento de forma directa como si fuese una variable, ni acceder a el creandolo en node, porque aún no existe, y al intentar hacerlo con un onclick(funcion) dentro de la funcion no reconoce la funcion porque aún no se a declarado y colocando la funcón por fuera no reconoce a movie porque esta dentro de la función. ¿Pudiste solucionar esto de alguna forma? Me gustaría saberlo
![](
asi quedo mi primera funcion para mostar las peliculas en tendencia
Requiero ayuda
Puedes arrastrar la imagen desde tu computadora hasta el editor de comentarios.
para subirlo a git pages, seria preferible configurar un archivo ENV??? ya que no carga la api al estar oculta
GitHub Pages no soporta variables de ambiente. En el curso profesional hablamos un poco más de ese tema: https://platzi.com/clases/2942-api-profesional/49656-deploy/