Solución:
Puede obtener datos de la interfaz oembed de youtube en dos formatos: XML y JSON
Dirección de interfaz: http://www.youtube.com/oembed?url=youtubeurl&format=json
Utilice esta función de PHP para obtener datos
function get_youtube($url){
$youtube = "http://www.youtube.com/oembed?url=". $url ."&format=json";
$curl = curl_init($youtube);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($curl);
curl_close($curl);
return json_decode($return, true);
}
$url = // youtube video url
// Display Data
print_r(get_youtube($url));
No olvide habilitar extension=php_curl.dll
en tus php.ini
Esto devuelve metadatos sobre un video:
http://www.youtube.com/oembed?url={videoUrlHere}&format=json
Usando su ejemplo, una llamada a:
http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=B4CRkpBGQzU&format=json
Devuelve lo siguiente, que puede digerir y analizar con PHP:
{
"provider_url": "http://www.youtube.com/",
"thumbnail_url": "http://i3.ytimg.com/vi/B4CRkpBGQzU/hqdefault.jpg",
"title": "Joan Osborne - One Of Us",
"html": "u003ciframe width="459" height="344" src="http://www.youtube.com/embed/B4CRkpBGQzU?fs=1u0026feature=oembed" frameborder="0" allowfullscreenu003eu003c/iframeu003e",
"author_name": "jzsdhk",
"height": 344,
"thumbnail_width": 480,
"width": 459,
"version": "1.0",
"author_url": "http://www.youtube.com/user/jzsdhk",
"provider_name": "YouTube",
"type": "video",
"thumbnail_height": 360
}
Otra API de URL que puede ser útil es: https://www.youtube.com/get_video_info?video_id=B4CRkpBGQzU
video_id es el argumento “v” de YouTube. El resultado es un diccionario en formato codificado en URL (clave1 = valor1 y clave2 = valor2 y …)
Esta es una API no documentada que existe desde hace mucho tiempo, por lo que explorarla depende del desarrollador. Soy consciente del “estado” (correcto / incorrecto), “código de error” (100 y 150 en mi práctica), “motivo” (descripción de cadena del error). Obtengo la duración (“length_seconds”) de esta manera porque oEmbed no proporciona esta información (extraño, pero cierto) y no puedo motivar a todos los empleadores para que obtengan claves de YouTube para usar la API oficial.