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