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 123 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 123 días
Oops, los ``` no parecen funcionar :s A ver ahora:
DrSlump#3 hace 123 días
Último intento lo prometo:
Abraham Estrada#4 hace 122 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 122 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 122 días
Exelente dani, y sí, es muy freki XD
IceBeat#7 hace 122 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 121 días
cool thx
IceBeat#9 hace 121 días
@GetField :)
ToRDeN#10 hace 121 días
Genial :D
Muy útil y extrapolable ^^
P.D: Geniales aportes en general (de tu blog) :)
IceBeat#11 hace 120 días
@ToRDeN muchas gracias :)
Omega#12 hace 120 días
Muy bueno :P
Lo malo es que solo pilla los de la 1º pagina de resultado.
IceBeat#13 hace 119 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 115 días
Thank You !!