Files
MyDiary/clases/claseApiPelicula.php

221 lines
5.5 KiB
PHP

<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/MyDiary/includes/conexionBD.php';
class ApiPelicula{
private $token;
public function __construct(){
$this->token = $_ENV['tokenTMDB'];
} // Fin __construct()
private function peticion($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_HTTPHEADER, ["Authorization: Bearer ".$this->token, "accept: application/json"]);
$respuesta = curl_exec($curl);
if(curl_errno($curl)){
return [
"error" => curl_error($curl)
];
}
curl_close($curl);
return $respuesta;
} // Fin peticion()
public function buscar($nombre){
$nombre = urlencode($nombre);
$url = "https://api.themoviedb.org/3/search/movie?query=".$nombre;
$respuesta = $this->peticion($url);
return json_decode($respuesta, true);
} // Fin buscar()
public function detalles($idApi){
/*
* Obtenemos los detalles y los créditos
* en una única petición.
*/
$url = "https://api.themoviedb.org/3/movie/"
. $idApi
. "?append_to_response=credits";
$datos = $this->peticion($url);
$respuesta = json_decode($datos, true);
if(isset($respuesta['status_code'])){
return $respuesta;
}
/*
* Directores
*/
$directores = [];
if(isset($respuesta['credits']['crew'])){
foreach($respuesta['credits']['crew'] as $persona){
if($persona['job'] == 'Director'){
$directores[] = $persona['name'];
if(count($directores) >= 2){
break;
}
}
}
}
$respuesta['directores'] =
implode(', ', $directores);
/*
* Actores
*/
$actores = [];
if(isset($respuesta['credits']['cast'])){
foreach($respuesta['credits']['cast'] as $actor){
if(count($actores) >= 6){
break;
}
$actores[] = $actor['name'];
}
}
$respuesta['actores'] =
implode(', ', $actores);
/*
* Guionistas
*/
$guionistas = [];
if(isset($respuesta['credits']['crew'])){
foreach($respuesta['credits']['crew'] as $persona){
if($persona['job'] == 'Screenplay'){
$guionistas[] = $persona['name'];
if(count($guionistas) >= 3){
break;
}
}
}
}
$respuesta['guionistas'] =
implode(', ', $guionistas);
/*
* Eliminamos credits porque ya no necesitamos
* conservar toda esa información en la respuesta.
*/
unset($respuesta['credits']);
return $respuesta;
} // Fin detalles()
public function transformarDatos($resultado){
$pelicula = [];
$pelicula['idApi'] = $resultado['id'];
$pelicula['nombrePelicula'] = $resultado['title'];
$pelicula['anoPelicula'] = substr($resultado['release_date'],0,4);
$pelicula['posterPelicula'] = "https://image.tmdb.org/t/p/w500".$resultado['poster_path'];
$pelicula['ratingAvgPelicula'] = number_format($resultado['vote_average']/2, 2);
$pelicula['sinopsisPelicula'] = $resultado['overview'];
if(isset($resultado['runtime'])){
$pelicula['duracionPelicula'] = $resultado['runtime'];
}
if(isset($resultado['directores'])){
$pelicula['directorPelicula'] = $resultado['directores'];
}
if(isset($resultado['actores'])){
$pelicula['actorPelicula'] = $resultado['actores'];
}
if(isset($resultado['guionistas'])){
if($resultado['guionistas']==''){
$pelicula['guionistaPelicula'] = $resultado['directores'];
}else{
$pelicula['guionistaPelicula'] = $resultado['guionistas'];
}
}
// Géneros
if(isset($resultado['genres'])){
$generos = [];
foreach($resultado['genres'] as $genero){
$generos[] = $genero['name'];
}
$pelicula['generoPelicula'] = implode(', ', $generos);
}
// Paises
if(isset($resultado['origin_country'])){
$paises = [];
foreach($resultado['origin_country'] as $pais){
$paises[] = $pais;
}
$pelicula['paisPelicula'] = implode(', ', $paises);
}
// Compañías
if(isset($resultado['production_companies'])){
$companias = [];
foreach($resultado['production_companies'] as $compania){
$companias[] = $compania['name'];
}
$pelicula['companiaPelicula'] = implode(', ', $companias);
}
// Idiomas
if(isset($resultado['spoken_languages'])){
$idiomas = [];
foreach($resultado['spoken_languages'] as $idioma){
$idiomas[] = $idioma['name'];
}
$pelicula['idiomaPelicula'] = implode(', ', $idiomas);
}
return $pelicula;
} // Fin transformarDatos()
} // Fin clase ApiPelicula
?>