Buscador Youtube, Tutorial PHP (Principiante)

Iniciado por M4ti4x, 21 Septiembre 2007, 22:09 PM

0 Miembros y 1 Visitante están viendo este tema.

M4ti4x

Hola como estan, bueno quise hacer este pequeño tuto para la gente que alguna ves se pregunto como se hacen esos buscadores de youtube que andan por ahi

Esta idea es aplicable con cualquier pagina, cualquier modo, solo es cosa de pensar, yo uso una clase que programe con esto lo haremos mas sencillo.

Ah y otra cosa esto no usa nada de la libreria CURL, etc.., puede funcionar en la gran mayoria de host

Empecemos, si no sabes nada de php... ahora sabras ...

Lo que realmente haremos sera leer un fichero externo que sera en este caso la web de youtube, asi de rapido.

Bueno usaremos una clase que hice que se llama "fichero.class.php"

Creamos un archivo "index.php", requerimos la clase y con estos metodos sencillos de la clase obtendremos el codigo fuente de la pagina de youtube.

Código (php) [Seleccionar]
require "fichero.class.php";
$busqueda = "simpson";
$pagina = "1";
//
$url = "http://es.youtube.com/results?search_type=search_videos&search_query=";
$url .= $busqueda;
$url .= "&search_sort=relevance&search_category=0&search=Search&v=&page=";
$url .= $pagina;
//
$obtener = new Fichero($url);
$obtener->Abre("rb");
$fuente = $obtener->Gets_cont("string-trim");
$obtener->Cierra();
//
echo $fuente;


Alguien que ejecute este tan pequeño codigo, vera los resultados de la busqueda de youtube, solo que sin colores, estilos, etc.

Entonces ya nos damos cuenta de cual es la ideal fundamental aqui, una ves que tenemos el code fuente en un array podemos parcearlo a nuestro gusto.

Bien ahora tenemos que extraer las partes que nos interesan en este caso yo sacare, la id, la imagen, el titulo, la descripcion y la duracion, para eso usaremos el metodo buscar de la clase que Fichero que habiamos creado y basicamente funciona como la funcion preg_match_all:

Código (php) [Seleccionar]
$patron = '/'; // inicio
$patron .= '\'; // Obtenemos la id del video(s)
$patron .= '\\*\/a\>'; // Obtenemos Imagen del video
$patron .= '.*?'; // No nos importa lo q sigue
$patron .= '\(.*?)\*\/a\>'; // obtenemos Titulo del video
$patron .= '.*?'; // No nos importa lo q sigue
$patron .= '\(.*?)\*\/span\>'; // Obtenemos Descripcion del video
$patron .= '.*?'; // No nos importa lo q sigue
$patron .= '\(.*?)\*\/span\>'; // Obtenemos duracion del video
$patron .= '/'; // fin
//
$array = $obtener->Buscar($patron,$fuente); // enviamos el patron y el code fuente

Esto nos devolvera una matriz con el siguiente contenido (busqueda[],ids[],imagenes[],titulos[],descripciones[],duraciones[])
entonces ahora lo que haremos sera asignar a un arreglo diferente cada campo que nos interese de la matriz:

Código (php) [Seleccionar]
$id = $array[1];
$imagen = $array[2];
$titulo = $array[3];
$descripcion = $array[4];
$duracion = $array[5];


Bien ahora como la cantidad de elementos de cada arreglo es la misma podemos contar cualquiera para luego recorrerlos:

Código (php) [Seleccionar]
$cantidad = count($id); // contamos cuantos videos se encontro

ahora pensando en futuro crearemos una pagina llamada vervideo.php que le enviaremos como parametro la id del video y lo que hará sera mostrarlo, creamos las iteraciones de la tabla con los datos q habiamos recogido:


Código (php) [Seleccionar]
echo "*table border="1">";
for ($i=0; $i*$cantidad; $i++) {
echo "*tr>*td>";
echo "*a href='vervideo.php?id=$id[$i]'>";
echo "*img src='$imagen[$i]' border='0′/>";
echo "*/a>";
echo "*/td>";
//
echo "*td>";
echo "*p>*a href='vervideo.php?id=$id[$i]'>";
echo "*b>$titulo[$i]*/b>";
echo "*/a>*/p>";
echo "*p>$descripcion[$i]*/p>";
echo "*p>Duracion : $duracion[$i]*/p>";
echo "*/td>*/tr>";
}
echo "*/table>";


Esto mostrara los datos recogidos en una tabla y se mostrara en pantalla, bien ahora la paginacion extraeremos de igual manera que los datos anteriores con un patron:

Código (php) [Seleccionar]
// Ahora buscaremos las paginas
$patron_paginas = '/\(.*?)\*\/a\>/';
$array_pag = $obtener->Buscar($patron_paginas,$fuente);


listo ahora lo mostramos con un simple foreach y validando que sean numeros:

Código (php) [Seleccionar]
foreach ($array_pag[1] as $val) {
if (is_numeric($val)) {
echo "$val | ";
}
}


Umm ahora nos faltaria el formulario y la validacion en el script si es q se ejecuto el formulario
Código (html4strict) [Seleccionar]

*form action="" method="get">
Buscar video :*br />
*input type="text" name="busqueda" value="*?=$_GET['busqueda']?>" />
*input type="submit" value="Buscar" />
*/form>


para saber que hemos enviado el fomulario podemos pregntarle al script:

Código (php) [Seleccionar]
if (isset($_GET['busqueda']))

bueno ahora sencillamente creamos o aumentamos si esta ya creado "vervideo.php" lo siguiente

Código (html4strict) [Seleccionar]
*object width="425" height="350">
*param name="movie" value="http://www.youtube.com/v/*?=$id?>">*/param>
*param name="wmode" value="transparent">*/param>
*embed src="http://www.youtube.com/v/*?=$id?>" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350">*/embed>
*/object>


practicamente el mismo codigo que nos brinda youtube solo que cambiamos el video dinamicamente.

Y bueno asi podemos hacer muchas cosas, este tutorial es para las personas que manejen o deseen manejar php, las utilidades que brinda, se puede hacer muchas cosas quizar cambiar el reproductor por uno personalizado, mostrar los omentarios, contenido en ajax, infinidad de cosas que queda de tarea a quien desea hacerlo.

Para los que no les gusta leer se los dejo echo xD:
http://rapidshare.com/files/57146908/buscayoutube_by_daxe.rar.html

дٳŦ٭

#1
Excelente, chincheta temporal.


Con sangre andaluza :)


Maties 360

#2
Perdon edito.... que no me habia fijado que el fichero d ela classe estaba para descargar...^^

Excelente tutorial

Salu2


spaceboy90

muy bueno, pero.... una cosa.... no veo la paginacion  :-\ a ver si me ayudas.. :-(