Comunidad PHPeros

Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: GuayAngel12 en 05 de Septiembre de 2011, 13:54:18 pm

Título: [FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 05 de Septiembre de 2011, 13:54:18 pm
Buenas a todos, llevo mucho tiempo sin aportar nada a la Comunidad, por lo que ahora me decido y voy a aportar una función que nos permite validar un video de YouTube.


function youtube_validator($dir){
$explode = explode('watch?v=',$dir); //Este explode separa la URL.
$explode2 = explode('&',$explode[1]); // Este explode separa la URL. Quedando solo la ID del video.
$id = $explode2[0]; // ID del video
if(strlen($id) == 11){ // Si la longitud del video es de 11 carácteres...
$url = 'http://i2.ytimg.com/vi/'.$id.'/default.jpg'; // Dirección de la imagen principal del video.
if($conex= @fopen($url,"rt")){ // Si se puede abrir y leer la imagen...
return true; // Devolver TRUE
} else { // Si no...
return false; // Devolver FALSE
} // Cerramos el IF
} else { // Si no...
return false; // Devolver FALSE
} // Cerramos el IF
} // Cerramos el IF


¿Cómo lo implementamos en nuestro código? - Pues de la siguiente manera:


if(youtube_validator(URL)){
echo 'El video existe';
} else {
echo 'El video NO existe';
}


NOTA: Éste sistema solo funciona con aquellos hostings que tengan activada la funcion fopen().

Espero que les haya gustado el aporte.

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: Siquillote en 05 de Septiembre de 2011, 13:58:57 pm

Hola Ángel,

Aunque yo ya sabía como hacerlo es interesante siempre tener información a mano.
Por mi parte tienes un K+ ;-)

Un saludo,
Siquillote.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 05 de Septiembre de 2011, 14:00:39 pm
Muchas gracias Siquillote.

Si por casualidad encontráis algun error en el código, comunicádmelo y lo modifico.  ;)

Saludos,
Ángel Q.

EDITO: ¿A nadie más le interesa? o ¿Soys unos vaguillos que os cuesta comentar?  :D
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: TomasThomas en 05 de Septiembre de 2011, 18:19:56 pm
Muchas gracias Siquillote.

Si por casualidad encontráis algun error en el código, comunicádmelo y lo modifico.  ;)

Saludos,
Ángel Q.

EDITO: ¿A nadie más le interesa? o ¿Soys unos vaguillos que os cuesta comentar?  :D

No es que no me interesaba, recién lo veo B:
En fín, me servirá, tienes +1 ;)
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 05 de Septiembre de 2011, 19:02:25 pm
Muchas gracias ThomasThomas.

Espero que te sirva  ;)

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: SoyJoaquin. en 05 de Septiembre de 2011, 20:29:06 pm
No se si sea yo pero, ¿No es mas fácil, corto y efectivo hacerlo usando expresiones regulares?
Saludos.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: Physlet en 05 de Septiembre de 2011, 20:31:35 pm
No se si sea yo pero, ¿No es mas fácil, corto y efectivo hacerlo usando expresiones regulares?
Saludos.
Él está validando que el video exista
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: SoyJoaquin. en 05 de Septiembre de 2011, 20:41:04 pm
Él está validando que el video exista

Ahh, ya.
Pensé que estaba validando la dirección.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 05 de Septiembre de 2011, 21:19:13 pm
Es lo que pasa por pasarse por alto el título del Tema. xD

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: nmartin021 en 05 de Septiembre de 2011, 22:26:00 pm
Noooooooooo lo andaba buscando! K+!
PD: Si le cambias el nombre de la función a "video_exists" (para que sea un "clon" de "file_exists") quedará mejor en un if :P
<?php
if(video_exists('http://youtube.com/watch?v=soyunvideoguay'))
    echo 'Existe :P';
else
    echo 'No existe D:';
?>
:D
Queda mejor, ¿no? :D (es  una sugerencia, no una crítica ^^)

EDIT:
No funciona, siempre devuelve TRUE, para eso debes obtener los headers y buscar si hay error 404... entonces devuelves true o false ;) luego intento hacerlo y lo dejo aquí :D
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 05 de Septiembre de 2011, 23:49:25 pm
Ah, pues ami desde LOCALHOST me funcionaba perfectamente.  :confused:

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: nmartin021 en 06 de Septiembre de 2011, 01:46:25 am
Ah, pues ami desde LOCALHOST me funcionaba perfectamente.  :confused:

Saludos,
Ángel Q.
Claro, pero es porque aunque metas un ID que no existe saldra la imagen de youtube por defecto y muestra true, pero si miras los headers de un ID que no existe comprobaras que si da error 404 ;)
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 06 de Septiembre de 2011, 12:07:12 pm
Ah, pues no lo sabía...

Siento mostrar una funcion que no sirve...

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: Physlet en 06 de Septiembre de 2011, 16:02:18 pm
Ah, pues no lo sabía...
Siento mostrar una funcion que no sirve...
???... Claro, porque es mucho mejor lamentar el hecho que buscarle una solución.

Bravo.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: Siquillote en 06 de Septiembre de 2011, 16:23:59 pm

Ah, pues no lo sabía...

Siento mostrar una funcion que no sirve...

Saludos,
Ángel Q.

¿No será mas fácil coger y verificar si la imgaen que obtienes es la de default si no existe el video y devolver false y en caso contrario saber si existe o no existe?...

Un saludo,
Siquillote.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 06 de Septiembre de 2011, 17:08:51 pm
Aunque ponga ésta dirección: http://i2.ytimg.com/vi/cacacacacac/default.jpg La imagen de default existe. Pero el video no existe.

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: nmartin021 en 07 de Septiembre de 2011, 21:47:01 pm
Ah, pues no lo sabía...

Siento mostrar una funcion que no sirve...

Saludos,
Ángel Q.
No pasa nada, todos nos equivocamos
???... Claro, porque es mucho mejor lamentar el hecho que buscarle una solución.

Bravo.
Si, tu ayuda...

La solución sería obtener los headers:

<?php
$headers = get_headers($url);
?>

Y aquí la función:
<?php
function video_exists($id){
$d = get_headers('http://i2.ytimg.com/vi/'.$id.'/default.jpg'); //obtener cabeceras
//$d es un array, el ['0'] es el status (404 = not found, 403 = forbidden, 200 = OK)
if(stristr($d['0'], '404 Not Found') === true){ //si es 404
return false; //no existe
}elseif(stristr($d['0'], '200 OK')){ //y si es 200
return true; //si existe
}
return false; //si no es ninguno de los dos de antes, no existe
}
?>
¿Qué hago?
1.- Obtengo los headers en la variable $d, pero sólo necesito el index 0 ($d['0']) que es el status de la petición. Devuelve HTTP/1.(version) (codigo) (estado texto). Ejemplo: HTTP/1.1 200 OK
2.- Compruebo si en el status está el código del error (404 / 200) y devuelvo false en caso de 404 y true en caso de 200 :D

Espero haber ayudado,
saludos :)
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: nmartin021 en 07 de Septiembre de 2011, 22:31:25 pm
Aunque ponga ésta dirección: http://i2.ytimg.com/vi/cacacacacac/default.jpg La imagen de default existe. Pero el video no existe.

Saludos,
Ángel Q.
Y justo por eso, siempre devuelve true.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: Physlet en 07 de Septiembre de 2011, 22:45:49 pm
???... Claro, porque es mucho mejor lamentar el hecho que buscarle una solución.

Bravo.
Si, tu ayuda...
Su respuesta a la problemática no me motivó para nada a brindarle apoyo.



<?php
function video_exists($id){
$d = get_headers('http://i2.ytimg.com/vi/'.$id.'/default.jpg'); //obtener cabeceras
//$d es un array, el ['0'] es el status (404 = not found, 403 = forbidden, 200 = OK)
if(stristr($d['0'], '404 Not Found') === true){ //si es 404
return false; //no existe
}elseif(stristr($d['0'], '200 OK')){ //y si es 200
return true; //si existe
}
return false; //si no es ninguno de los dos de antes, no existe
}
?>
Pienso que puedes ir directo al grano, porque el único caso en que la respuesta es verdadera es cuando trae el código 200.

function video_exists($id){
$d = get_headers('http://i2.ytimg.com/vi/'.$id.'/default.jpg');

if(stristr($d['0'], '200 OK'))
return true;
else
return false;
}
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: GuayAngel12 en 07 de Septiembre de 2011, 22:52:45 pm
Bueno, muchísimas gracias tanto a nmartin021 como a Physlet.

Saludos,
Ángel Q.
Título: Re:[FUNCIÓN] Validar video de YouTube
Publicado por: nmartin021 en 08 de Septiembre de 2011, 12:45:51 pm
Si, tu ayuda...
Su respuesta a la problemática no me motivó para nada a brindarle apoyo.


Pienso que puedes ir directo al grano, porque el único caso en que la respuesta es verdadera es cuando trae el código 200.

function video_exists($id){
$d = get_headers('http://i2.ytimg.com/vi/'.$id.'/default.jpg');

if(stristr($d['0'], '200 OK'))
return true;
else
return false;
}
K+ por la función