How can I retrieve YouTube video details from video URL using PHP?
You can get data from youtube oembed interface in two formats: XML and JSON
Interface address: http://www.youtube.com/oembed?url=youtubeurl&format=json
Use this PHP function to get data
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));
Don't forget to enable extension=php_curl.dll
in your php.ini
This returns metadata about a video:
http://www.youtube.com/oembed?url={videoUrlHere}&format=json
Using your example, a call to:
http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=B4CRkpBGQzU&format=json
Returns the following, which you can digest and parse with 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=1\u0026feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e", "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}
Yet another URL API that can be helpful is: https://www.youtube.com/get_video_info?video_id=B4CRkpBGQzU
video_id is "v" argument of youTube. Result is a dictionary in URL-encoded format (key1=value1&key2=value2&...)
This is undocumented API existing for long time, so exploring it is up to developer. I am aware of "status" (ok/fail), "errorcode" (100 and 150 in my practice), "reason" (string description of error). I am getting duration ("length_seconds") this way because oEmbed does not provide this information (strange, but true) and I can hardly motivate every employer to get keys from youTube to use official API