Hace un tiempo que me interese en los servicios de datos de YouTube y me decidí ha realizar una función que me ayudara a comprender los sistemas que utilizaba YouTube para organizarse y mantener una seguridad interna, y de aquello nació la función youtube(). Como ya comente en el anterior articulo, la fucnion youtube() se puede utilizar para extraer todos los datos de un vídeo en formad en forma de array de manera que podamos utilizarlo para lo que queramos.

Segun comenta Txabi en un comentario de la web parece que la duncion ha dejado de funcionar dando un error al no encontrar el parametro "t". Para solucionar esto solo tenéis que ir a la 6º linea donde pone $exp_info = '!&t=(.+)&sk=!U'; y quitar el sk= dejándolo así, $exp_info = '!&t=(.+)&!U';. De esta manera encontrará el dato correctamente y volverá a funcionar.
Si a demás queremos recuperar la opción de ver la fecha en la que se ha subido el vídeo a youtube es mejor que utilicéis la nueva versión.
Para futuros problemas he decidido insertarle un parámetro de debug que permite diagnosticar diversos problemas para poder darles solución mas rápidamente. Para activar esta opción solo tenéis que poner true en la 2º variable y dará como resultado el diagnostico.

PHP:
  1. function youtube($id, $debug = false) {
  2.     $url = 'http://es.youtube.com/watch?v='.$id;
  3.     $query = @file_get_contents($url);
  4.    
  5.     $exp_info = '!&t=(.+)&!U';
  6.     preg_match_all($exp_info,$query,$t);
  7.    
  8.     $exp_info = "!<meta name=\"title\" content=\"(.+)\">!U";
  9.     preg_match_all($exp_info,$query,$titulo);
  10.    
  11.     $exp_info = "!<meta name=\"description\" content=\"(.+)\">!U";
  12.     preg_match_all($exp_info,$query,$descripcion);
  13.        
  14.     $exp_info = "!<span class=\"smallText\">(.+) de (.+) de (.+)</span>!U";
  15.     preg_match_all($exp_info,$query,$fecha);
  16.    
  17.     $exp_info = "<meta name=\"keywords\" content=\"(.+)\">";
  18.     preg_match_all($exp_info,$query,$tags);
  19.    
  20.     $t        = $t[1][0];
  21.     $titulo   = $titulo[1][0];
  22.     $descripcion    = $descripcion[1][0];
  23.     $fecha      = $fecha[1][0].' de '.$fecha[2][0].' de '.$fecha[3][0];
  24.     $tags         = $tags[1][0];
  25.            
  26.     $salida["id"]         = $id;
  27.     $salida["t"]            = $t;
  28.     $salida["url"]      = $url;
  29.     $salida["iurl"]   = "http://img.youtube.com/vi/".$id."/2.jpg";
  30.     $salida["reproductor"]  = "http://www.youtube.com/p.swf?video_id=".$id."&iurl=http://img.youtube.com/vi/".$id."/2.jpg&t=".$t;
  31.     $salida["video"]        = "http://youtube.com/get_video.php?video_id=".$id."&t=".$t;
  32.     $salida["html"]   = "<object width=\"425\" height=\"350\"><param name=\"movie\" value=\"http://www.youtube.com/v/".$id."\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.youtube.com/v/".$id."\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"350\"></embed></object>";
  33.     $salida["title"]        = $titulo;
  34.     $salida["descripcion"]  = $descripcion;
  35.     $salida["fecha"]        = $fecha;
  36.     $salida["tags"]   = $tags;
  37.  
  38.     if($debug){ //sistema de diagnostico
  39.         $salida['debug']                = $query;
  40.         $s['la url de lectura es']    = $url;
  41.         $s['lectura de video']      = ($query  )    ? 'si' : 'no' ;
  42.         $s['t encontrado']        = ($t   )    ? 'si' : 'no' ;
  43.         $s['titulo encontrado']   = ($titulo      )  ? 'si' : 'no' ;
  44.         $s['descripcion encontrada']    = ($descripcion )    ? 'si' : 'no' ;
  45.         $s['fecha encontrada']      = ($fecha  )    ? 'si' : 'no' ;
  46.         $s['tags encontrados']      = ($tags    ) ? 'si' : 'no' ;
  47.         $s['contenido para debug']    = $salida;
  48.         return  $s;
  49.     }
  50.     if($t == ""){ //Error de conexion
  51.         return false;
  52.     } else { // todo OK
  53.         return $salida;
  54.     }
  55. }

Actualización: nueva version3