Foros del Web » Programando para Internet » PHP »

Función regular de youtube

Estas en el tema de Función regular de youtube en el foro de PHP en Foros del Web. Hola amigos del foro. En esta ocasion les vengo a pedir ayuda en buscar la funcion regular de youtube. Les explico estoy desarrollando un muro ...
  #1 (permalink)  
Antiguo 03/03/2012, 17:14
Avatar de Pcfan  
Fecha de Ingreso: enero-2012
Ubicación: Concepción - Chile
Mensajes: 14
Antigüedad: 12 años, 2 meses
Puntos: 1
Función regular de youtube

Hola amigos del foro.
En esta ocasion les vengo a pedir ayuda en buscar la funcion regular de youtube.
Les explico estoy desarrollando un muro como face entonces lo que yo quiero es que salga igual a face que al ingresar la url de youtube (salga una descripcion del video y titulo), pero primero necesito comprobar si la url ingresada pertenece a YouTube, para eso se puede usar una expresion regular pero no se como seria, tambien quiero que de esa url ingresada me saque la id del video. Ejemplo:

http://www.youtube.com/watch?v=Kxu_rvb2q2E&feature=g-like&context=G2d2a2cdALT0xDUwAGAA

lo de negrita seria la id de mi video.

Saludos y espero a que entiendan y colaboren.
Thank!
  #2 (permalink)  
Antiguo 03/03/2012, 18:44
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 3 meses
Puntos: 18
Respuesta: Función regular de youtube

Tengo este codigo:


modificalo para que se llene a tu requerimiento.
Código PHP:

include "la_clase_de_youtube.php";
$error false;
            
$aError = array();
            
            
$url trim($this->data['url']); //la url que ingresen de youtube
            
if(strpos($url,'http://') === false){
                
$url 'http://'$url;
            }

            
$valid_url strpos($url,'http://www.youtube.com/watch?v=');
            if( 
$valid_url === false){
                
$error true;
                
$aError[] = 'Introduce una url valida';
            }else{
                
//creacion del objeto
                
$youtube = new youtube($url);
                
                
$title $youtube->getTitle();
                if(empty(
$title)){
                    
$error true;
                    
$aError[] = 'Introduce una url valida';
                }
            }
            
            
            
            if(!
$error){
                
$youtube_data = array();
                
$youtube_data['title'] = $youtube->getTitle();
                
$youtube_data['published'] = $youtube->getPublished();
                
$youtube_data['description'] = $youtube->getDescription();
                
$youtube_data['url'] = $youtube->getUrl();
                
$youtube_data['url_image'] = $youtube->getUrlImage('default');
                
$youtube_data['embed'] = $youtube->getEmbeb(620370);
                
                
$json_data json_encode($youtube_data);
            }else{
                
$json_data json_encode($aError);
            } 

la_clase_de_youtube.php
Código PHP:
<?php
/*
 * Name: Simple Class Info YouTube
 * Description: Get Information of video YouTube
 * Development: Chuecko
 * Site: http://www.zarpele.com.ar
 * License: GNU GENERAL PUBLIC LICENSE (http://www.gnu.org/licenses/gpl.html)
 * Version: 1.0
 */

class Youtube
{
    var 
$data '';
    var 
$id '';

    public function 
__construct($id)
    {
        if (
strlen($id) >=22)
        {
            
parse_strparse_url$idPHP_URL_QUERY ) );
            
$this->id $v;
        }
        else
        {
            
$this->id=$id;
        }

        
$url "http://gdata.youtube.com/feeds/videos/".$this->id;
        
$browser_id "none";
        
$curl_handle curl_init();
        
$options = array
        (
            
CURLOPT_URL=>$url,
            
CURLOPT_HEADER=>false,
            
CURLOPT_RETURNTRANSFER=>true,
            
CURLOPT_USERAGENT=>$browser_id
        
);
        
curl_setopt_array($curl_handle,$options);
        
$server_output curl_exec($curl_handle);
        
curl_close($curl_handle);

        
$this->data=$server_output;
    }

    public function 
getTitle()
    {
        
$startString "<media:title type='plain'>";
        
$endString "</media:title>";

        
$tempString strstr($this->data$startString);

        
$endLocation strpos($tempString$endString);
        
$title substr($tempString0$endLocation);

        if (empty(
$title))
        {
            
$title=false;
        }
        else
        {
            
$title=substr($title,strlen($startString));
        }

        return 
$title;
    }

    public function 
getPublished()
    {
        
$startString "<published>";
        
$endString "</published>";

        
$starLocation strpos($this->data$startString);
        
$tempString substr($this->data$starLocation);

        
$endLocation strpos($tempString$endString);
        
$published substr($tempString0$endLocation);

        if (empty(
$published))
        {
            
$published=false;
        }
        else
        {
            
$published=substr($published,strlen($startString));
            
$published=substr($published,0,10);
        }

        return 
$published;
    }

    public function 
getDescription()
    {
        
$startString "<media:description type='plain'>";
        
$endString "</media:description>";

        
$starLocation strpos($this->data$startString);
        
$tempString substr($this->data$starLocation);

        
$endLocation strpos($tempString$endString);
        
$description substr($tempString0$endLocation);

        if (empty(
$description))
        {
            
$description=false;
        }
        else
        {
            
$description=substr($description,strlen($startString));
        }

        return 
$description;
    }

    public function 
getMetaTags()
    {
        
$startString "<media:keywords>";
        
$endString "</media:keywords>";

        
$starLocation strpos($this->data$startString);
        
$tempString substr($this->data$starLocation);

        
$endLocation strpos($tempString$endString);
        
$metaTags substr($tempString0$endLocation);

        if (empty(
$metaTags))
        {
            
$metaTags=false;
        }
        else
        {
            
$metaTags=substr($metaTags,strlen($startString));
        }

        return 
$metaTags;
    }

    public function 
getUrl()
    {
        return 
"http://www.youtube.com/watch?v=".$this->id;
    }

    public function 
getUrlImage($option)
    {
        if(
$option=='default')
        {
            return 
'http://i.ytimg.com/vi/'.$this->id.'/default.jpg';
        }
        if(
$option=='grande')
        {
            return 
'http://i.ytimg.com/vi/'.$this->id.'/0.jpg';
        }
        if(
$option==1)
        {
            return 
'http://i.ytimg.com/vi/'.$this->id.'/1.jpg';
        }
        if(
$option==2)
        {
            return 
'http://i.ytimg.com/vi/'.$this->id.'/2.jpg';
        }
        if(
$option==3)
        {
            return 
'http://i.ytimg.com/vi/'.$this->id.'/3.jpg';
        }
    }

    public function 
getEmbeb($width$height)
    {
        
$autoplay 1;
        return 
'<iframe class="youtube-player" type="text/html" width="'.$width.'" height="'.$height.'" src="http://www.youtube.com/embed/'.$this->id.'?autoplay='.$autoplay.'" frameborder="0">
        </iframe>'
;
    }

}
__________________
To the end....
  #3 (permalink)  
Antiguo 03/03/2012, 18:51
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 6 meses
Puntos: 188
Respuesta: Función regular de youtube

Cuando tengas la expresión regular para validar si es una url de youtbe, accede a ella con la función http://php.net/manual/es/function.get-meta-tags.php y podrás obtener los valores para el titulo, descripción entre otras cosas.

La expresión regular yo la pienso así:

1.- Ver si la cadena viene con http:// o con www al comienzo
2.- Verificar que lo que sigue del punto anterior sea youtube.com o youtube.be

Si a estos 2 me da true entonces tengo una url de youtube.

Continuo codeando.

Ahora con preg_split y una sencilla expresión regular para extraer lo que este dentro de v= y opcionalmente & , Esto para obtener el id del video por si lo quieres guardar en la base de datos.....

En resumen

Verifico que es un url

/^(http:\/\/|www)(.*\.(net|com|org|cualquierdominio|etc...)/i

ahora verifico que es un url de youtube

/^(http:\/\/|www)(\.(youtube)\.(com|be))/i

mmm te recomiendo leer algunos libros que encuentres de expresiones regulares, "mas de 1" y ver muchos ejemplos, claro en el caso que no sepas sobre expresiones regulares.

De lo digo por que a esas expresiones les hace falta algo para que funcionen.

saludos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: expresion, regular, url, verificar, youtube
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:43.