YouTube.php
Siempre me ha gustado parsear las paginas web, es algo que me encanta, puede ser muy friki pero uso las expresiones como pasatiempo. En uno de los proyectos he tenido que buscar vídeos en youtube, como era una simple búsqueda en vez de usar su API hice una pequeña función.
Devuelve un array con lo mínimo para mostrar: ID, imagen y titulo del vídeo.
function youtube($q='') {
$videos = array();
$url = 'http://youtube.com/results?search_query='.urlencode(strtolower($q));
$pagina = @file_get_contents($url);
//!<a href="/watch\?v=([^"]+)">[\s]+<img src="(.*)" class="vimg120" title="(.*)"!Usi
if(preg_match_all('!<a\s+href="/watch\?v=([^"&]+)"[^<]+<img\s+src="([^"]*)"\s+class="vimg120"\s+title="([^"]*)"!Usi', $pagina, $info, PREG_SET_ORDER)) {
foreach($info as $video) {
$videos[] = array(
'id' => $video[1],
'image' => $video[2],
'text' => $video[3]
);
}
}
return $videos;
}
//youtube('chikichiki');
Se puede hacer mas compleja, pero tal como esta cumple su función perfectamente. Si necesitas hacer una busqueda dentro de las categorias puedes añadir en url el parametro search_category.
Actualizado: DrSlump propone una expresión más eficiente :).
Ver post
Comentar
DrSlump#1 hace 620 días
Es curioso, yo también estoy en un proyecto que requiere parsear las páginas de proveedores de video :)
Puedes reemplazar la expresión regular por esta otra que es mucho más eficiente al no necesitar apenas backtracking
```
DrSlump#2 hace 620 días
Oops, los ``` no parecen funcionar :s A ver ahora:
DrSlump#3 hace 620 días
Último intento lo prometo:
Abraham Estrada#4 hace 620 días
Esta chido, me recuerda los tiempos que trabaja en Iusacell y me dedicaba a crear sitios "moviles" de paginas de noticias y tenia que parsear la pagina cuando no tenian rss y hacer una version de la pagina para celulares.
IceBeat#5 hace 620 días
Jejeje @DrSlump si es que no hay dos sin tres :).
Muchas gracias por la expresión ahora mismo la actualizo.
@Abraham Estrada si buscas bien aun quedan paginas que no tienen RSS jeje.
imzyos#6 hace 620 días
Exelente dani, y sí, es muy freki XD
IceBeat#7 hace 619 días
@imzyos jeje un poco si, pero sino es que me oxido y si pierdes como se hacían las expresiones las has cagado
GetField#8 hace 619 días
cool thx
IceBeat#9 hace 619 días
@GetField :)
ToRDeN#10 hace 618 días
Genial :D
Muy útil y extrapolable ^^
P.D: Geniales aportes en general (de tu blog) :)
IceBeat#11 hace 618 días
@ToRDeN muchas gracias :)
Omega#12 hace 618 días
Muy bueno :P
Lo malo es que solo pilla los de la 1º pagina de resultado.
IceBeat#13 hace 617 días
@Omega como dije en el post puedes hacerla mas compleja, incluso lo suyo seria hacer una clase o algo, pero ya para eso esta la API que proporcionan.
Aunque bueno puedo resolverte eso diciendo que si añades &page=2 a $url puedes devolver los resultados de la segunda pagina.
Ghyoom.Com#14 hace 612 días
Thank You !!
karolain#15 hace 201 días
ola mi chiko me gusta la pichula i el choro mi chiko el ke me kiere chupar el piko me llama a este numero mi chiko 791115 ia los esperos chikos i chikos me llaman iaaa osino a este numero mi chiko 236156 osino al 382126 ia los esperos
josephulrich#16 hace 110 días
Opino lo mismo de Omega: " Lo malo es que solo pilla los de la 1º pagina de resultado." En todo caso Graxias !!!!
Luis#17 hace 88 días
oye y como llamo a la funcion por que trato y nada dime un ejemplito si no es mucho pedir