Daniel Mota / IceBeat

Mi vida en formato CSS3

Estás en la bitácora de IceBeat, una página sobre diseño y desarrollo web.

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('!<as+href="/watch?v=([^"&]+)"[^<]+<imgs+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 :).


Comentarios


  1. 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 · hace 1512 días

  2. Oops, los ``` no parecen funcionar :s A ver ahora:

    # · DrSlump · hace 1512 días

  3. Último intento lo prometo:

    &lt;as+href="/watch?v=([^"&]+)"[^&lt;]+&lt;imgs+src="([^"]*)"s+class="vimg120"s+title="([^"]*)

    # · DrSlump · hace 1512 días

  4. 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.

    # · Abraham Estrada · hace 1512 días

  5. 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.

    # · IceBeat · hace 1512 días

  6. Exelente dani, y sí, es muy freki XD

    # · imzyos · hace 1512 días

  7. @imzyos jeje un poco si, pero sino es que me oxido y si pierdes como se hacían las expresiones las has cagado

    # · IceBeat · hace 1511 días

  8. cool thx

    # · GetField · hace 1511 días

  9. # · IceBeat · hace 1511 días

  10. Genial :D

    Muy útil y extrapolable ^^

    P.D: Geniales aportes en general (de tu blog) :)

    # · ToRDeN · hace 1510 días

  11. @ToRDeN muchas gracias :)

    # · IceBeat · hace 1510 días

  12. Muy bueno :P

    Lo malo es que solo pilla los de la 1º pagina de resultado.

    # · Omega · hace 1510 días

  13. @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.

    # · IceBeat · hace 1509 días

  14. Thank You !!

    # · Ghyoom.Com · hace 1504 días

  15. 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

    # · karolain · hace 1093 días

  16. Opino lo mismo de Omega: " Lo malo es que solo pilla los de la 1º pagina de resultado." En todo caso Graxias !!!!

    # · josephulrich · hace 1002 días

  17. oye y como llamo a la funcion por que trato y nada dime un ejemplito si no es mucho pedir

    # · Luis · hace 981 días

No se puede añadir más comentarios.