Простой класс для работы с 3 основными видеосервисами. Класс простой и написан на скорую руку, однако вы можите его доработать или использовать в таком виде) пример кода для получения информации о видео на основе кода плеера:
if(isset($_POST[‘flash’])){
$video = new infoVideoService;
if(strpos($_POST[‘flash’], «youtube.com»)){
$code = stripslashes($_POST[‘flash’]);
$s1 = strpos($code, ‘http://www.youtube.com’)+strlen(‘http://www.youtube.com’)+1;
$s2 = strpos($code, ‘»></param>’);
$code2 = substr($code, $s1, $s2—$s1);
$s3 = strpos($code2, ‘/’)+1;
$s4 = strpos($code2, ‘&’);
$codeTube = substr($code2, $s3, $s4—$s3);
$t=$video->infoVideo(‘youtube’, $codeTube);
}else if(strpos($_POST[‘flash’], «rutube.ru»)){
$code = strtolower(stripslashes($_POST[‘flash’]));
$s1 = strpos($code, ‘http://video.rutube.ru’)+strlen(‘http://video.rutube.ru’)+1;
$s2 = strpos($code, ‘»></param>’);
$codeTube = substr($code, $s1, $s2—$s1);
$t=$video->infoVideo(‘rutube’, $codeTube);
}else if(strpos($_POST[‘flash’], «vimeo.com»)){
$code = strtolower(stripslashes($_POST[‘flash’]));
$s1 = strpos($code, ‘http://vimeo.com/moogaloop.swf?clip_id=’)+strlen(‘http://vimeo.com/moogaloop.swf?clip_id=’);
$s2 = strpos($code, ‘»></param>’);
$code1 = substr($code, $s1, $s2—$s1);
$s3 = strpos($code1, ‘&’);
$codeTube = substr($code1, 0, $s3);
$t=$video->infoVideo(‘vimeo’, $codeTube);
}
echo ‘<pre>’; print_r($t); echo ‘</pre>’;
}
$video = new infoVideoService;
if(strpos($_POST[‘flash’], «youtube.com»)){
$code = stripslashes($_POST[‘flash’]);
$s1 = strpos($code, ‘http://www.youtube.com’)+strlen(‘http://www.youtube.com’)+1;
$s2 = strpos($code, ‘»></param>’);
$code2 = substr($code, $s1, $s2—$s1);
$s3 = strpos($code2, ‘/’)+1;
$s4 = strpos($code2, ‘&’);
$codeTube = substr($code2, $s3, $s4—$s3);
$t=$video->infoVideo(‘youtube’, $codeTube);
}else if(strpos($_POST[‘flash’], «rutube.ru»)){
$code = strtolower(stripslashes($_POST[‘flash’]));
$s1 = strpos($code, ‘http://video.rutube.ru’)+strlen(‘http://video.rutube.ru’)+1;
$s2 = strpos($code, ‘»></param>’);
$codeTube = substr($code, $s1, $s2—$s1);
$t=$video->infoVideo(‘rutube’, $codeTube);
}else if(strpos($_POST[‘flash’], «vimeo.com»)){
$code = strtolower(stripslashes($_POST[‘flash’]));
$s1 = strpos($code, ‘http://vimeo.com/moogaloop.swf?clip_id=’)+strlen(‘http://vimeo.com/moogaloop.swf?clip_id=’);
$s2 = strpos($code, ‘»></param>’);
$code1 = substr($code, $s1, $s2—$s1);
$s3 = strpos($code1, ‘&’);
$codeTube = substr($code1, 0, $s3);
$t=$video->infoVideo(‘vimeo’, $codeTube);
}
echo ‘<pre>’; print_r($t); echo ‘</pre>’;
}
код самого класса:
class infoVideoService{
function infoVideo($service, $id){
$def_service = array(‘youtube’,‘rutube’,‘vimeo’,‘smotri’,‘video.mail’,‘video.yandex’);
if(in_array($service,$def_service))return $this->$service($id, $type);
else return false;
}
private function vimeo($id){
$rezArray=$this->xml2array(«http://vimeo.com/api/oembed.xml?url=http://vimeo.com/$id«);
$img[‘standart’]=$rezArray[‘oembed’][‘thumbnail_url’];
$array=array(
‘service’=>array(
‘title’ => $rezArray[‘oembed’][‘provider_name’],
‘logo’ =>‘http://bitcast.vimeo.com/vimeo/assets/images/logo.gif’,
‘url’ =>$rezArray[‘oembed’][‘provider_url’]
),
‘auter’ => $rezArray[‘oembed’][‘author_name’],
‘video’=>array(
‘title’ => $rezArray[‘oembed’][‘title’],
‘url’ =>$id,
‘content’ => ‘none’,
‘images’=>$img,
‘time’ => $rezArray[‘oembed’][‘duration’]/60
)
);
return $array;
}
private function rutube($id){
$rezArray=$this->xml2array(«http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id=$id«);
$img = array();
$img[‘standart’]=$rezArray[‘response’][‘movie’][‘thumbnailLink’];
$img[‘mini’]=$rezArray[‘response’][‘movie’][‘thumbnailSmallLink’];
$img[‘maximum’]=$rezArray[‘response’][‘movie’][‘thumbnailMediumLink’];
$array=array(
‘service’=>array(
‘title’ => ‘RuTube’,
‘logo’ =>»,
‘url’ =>$rezArray[‘response’][‘movie’][‘playerLink’]
),
‘auter’ => $rezArray[‘response’][‘movie’][‘author’],
‘video’=>array(
‘title’ => $rezArray[‘response’][‘movie’][‘title’],
‘url’ =>$rezArray[‘response’][‘movie’][‘playerLink’],
‘content’ => $rezArray[‘response’][‘movie’][‘description’],
‘images’=>$img,
‘time’ => $rezArray[‘response’][‘movie’][‘duration’]
)
);
return $array;
}
private function youtube($id){
$rezArray=$this->xml2array(«http://gdata.youtube.com/feeds/api/videos/$id«);
$img = array();
if(is_array($rezArray[‘entry’][‘media:group’][‘media:thumbnail’]) and count($rezArray[‘entry’][‘media:group’][‘media:thumbnail’])>0){
foreach($rezArray[‘entry’][‘media:group’][‘media:thumbnail’] as $imgas){
if(is_array($imgas) and count($imgas)>0)$img[]=$imgas;
}
}
$array=array(
‘service’=>array(
‘title’ => ‘YouTube’,
‘logo’ =>$rezArray[‘entry’][‘logo’],
‘url’ =>$rezArray[‘entry’][‘link’][‘0_attr’][‘href’]
),
‘auter’ => $rezArray[‘entry’][‘author’],
‘video’=>array(
‘title’ => $rezArray[‘entry’][‘title’],
‘url’ =>$rezArray[‘entry’][‘link’][‘0_attr’][‘href’],
‘content’ => $rezArray[‘entry’][‘content’],
‘images’=>$img,
‘time’ => $rezArray[‘entry’][‘media:group’][‘yt:duration_attr’][‘seconds’]/60
)
);
return $array;
}
private function xml2array($url, $get_attributes = 1, $priority = ‘tag’){
$contents = «»;
if (!function_exists(‘xml_parser_create’))return array ();
$parser = xml_parser_create(»);
if (!($fp = @ fopen($url, ‘rb’)))return array ();
while (!feof($fp))$contents .= fread($fp, 8192);
fclose($fp);
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, «UTF-8»);
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if (!$xml_values) return; //Hmm…
$xml_array = array ();
$parents = array ();
$opened_tags = array ();
$arr = array ();
$current = & $xml_array;
$repeated_tag_index = array ();
foreach ($xml_values as $data){
unset ($attributes, $value);
extract($data);
$result = array ();
$attributes_data = array ();
if (isset ($value)){
if ($priority == ‘tag’) $result = $value;
else $result[‘value’] = $value;
}
if (isset ($attributes) and $get_attributes){
foreach ($attributes as $attr => $val){
if ($priority == ‘tag’) $attributes_data[$attr] = $val;
else $result[‘attr’][$attr] = $val; //Set all the attributes in a array called ‘attr’
}
}
if ($type == «open»){
$parent[$level —1] = & $current;
if (!is_array($current) or (!in_array($tag, array_keys($current)))) {
$current[$tag] = $result;
if ($attributes_data) $current[$tag . ‘_attr’] = $attributes_data;
$repeated_tag_index[$tag . ‘_’ . $level] = 1;
$current = & $current[$tag];
}else{
if (isset ($current[$tag][0])){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level]] = $result;
$repeated_tag_index[$tag . ‘_’ . $level]++;
}else{
$current[$tag] = array (
$current[$tag],
$result
);
$repeated_tag_index[$tag . ‘_’ . $level] = 2;
if (isset ($current[$tag . ‘_attr’])){
$current[$tag][‘0_attr’] = $current[$tag . ‘_attr’];
unset ($current[$tag . ‘_attr’]);
}
}
$last_item_index = $repeated_tag_index[$tag . ‘_’ . $level] — 1;
$current = & $current[$tag][$last_item_index];
}
}elseif ($type == «complete»){
if (!isset ($current[$tag])){
$current[$tag] = $result;
$repeated_tag_index[$tag . ‘_’ . $level] = 1;
if ($priority == ‘tag’ and $attributes_data)
$current[$tag . ‘_attr’] = $attributes_data;
}else{
if (isset ($current[$tag][0]) and is_array($current[$tag])){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level]] = $result;
if ($priority == ‘tag’ and $get_attributes and $attributes_data){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level] . ‘_attr’] = $attributes_data;
}
$repeated_tag_index[$tag . ‘_’ . $level]++;
}else{
$current[$tag] = array (
$current[$tag],
$result
);
$repeated_tag_index[$tag . ‘_’ . $level] = 1;
if ($priority == ‘tag’ and $get_attributes){
if (isset ($current[$tag . ‘_attr’])){
$current[$tag][‘0_attr’] = $current[$tag . ‘_attr’];
unset ($current[$tag . ‘_attr’]);
}
if ($attributes_data){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level] . ‘_attr’] = $attributes_data;
}
}
$repeated_tag_index[$tag . ‘_’ . $level]++; //0 and 1 index is already taken
}
}
}elseif ($type == ‘close’){
$current = & $parent[$level —1];
}
}
return ($xml_array);
}
}
function infoVideo($service, $id){
$def_service = array(‘youtube’,‘rutube’,‘vimeo’,‘smotri’,‘video.mail’,‘video.yandex’);
if(in_array($service,$def_service))return $this->$service($id, $type);
else return false;
}
private function vimeo($id){
$rezArray=$this->xml2array(«http://vimeo.com/api/oembed.xml?url=http://vimeo.com/$id«);
$img[‘standart’]=$rezArray[‘oembed’][‘thumbnail_url’];
$array=array(
‘service’=>array(
‘title’ => $rezArray[‘oembed’][‘provider_name’],
‘logo’ =>‘http://bitcast.vimeo.com/vimeo/assets/images/logo.gif’,
‘url’ =>$rezArray[‘oembed’][‘provider_url’]
),
‘auter’ => $rezArray[‘oembed’][‘author_name’],
‘video’=>array(
‘title’ => $rezArray[‘oembed’][‘title’],
‘url’ =>$id,
‘content’ => ‘none’,
‘images’=>$img,
‘time’ => $rezArray[‘oembed’][‘duration’]/60
)
);
return $array;
}
private function rutube($id){
$rezArray=$this->xml2array(«http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id=$id«);
$img = array();
$img[‘standart’]=$rezArray[‘response’][‘movie’][‘thumbnailLink’];
$img[‘mini’]=$rezArray[‘response’][‘movie’][‘thumbnailSmallLink’];
$img[‘maximum’]=$rezArray[‘response’][‘movie’][‘thumbnailMediumLink’];
$array=array(
‘service’=>array(
‘title’ => ‘RuTube’,
‘logo’ =>»,
‘url’ =>$rezArray[‘response’][‘movie’][‘playerLink’]
),
‘auter’ => $rezArray[‘response’][‘movie’][‘author’],
‘video’=>array(
‘title’ => $rezArray[‘response’][‘movie’][‘title’],
‘url’ =>$rezArray[‘response’][‘movie’][‘playerLink’],
‘content’ => $rezArray[‘response’][‘movie’][‘description’],
‘images’=>$img,
‘time’ => $rezArray[‘response’][‘movie’][‘duration’]
)
);
return $array;
}
private function youtube($id){
$rezArray=$this->xml2array(«http://gdata.youtube.com/feeds/api/videos/$id«);
$img = array();
if(is_array($rezArray[‘entry’][‘media:group’][‘media:thumbnail’]) and count($rezArray[‘entry’][‘media:group’][‘media:thumbnail’])>0){
foreach($rezArray[‘entry’][‘media:group’][‘media:thumbnail’] as $imgas){
if(is_array($imgas) and count($imgas)>0)$img[]=$imgas;
}
}
$array=array(
‘service’=>array(
‘title’ => ‘YouTube’,
‘logo’ =>$rezArray[‘entry’][‘logo’],
‘url’ =>$rezArray[‘entry’][‘link’][‘0_attr’][‘href’]
),
‘auter’ => $rezArray[‘entry’][‘author’],
‘video’=>array(
‘title’ => $rezArray[‘entry’][‘title’],
‘url’ =>$rezArray[‘entry’][‘link’][‘0_attr’][‘href’],
‘content’ => $rezArray[‘entry’][‘content’],
‘images’=>$img,
‘time’ => $rezArray[‘entry’][‘media:group’][‘yt:duration_attr’][‘seconds’]/60
)
);
return $array;
}
private function xml2array($url, $get_attributes = 1, $priority = ‘tag’){
$contents = «»;
if (!function_exists(‘xml_parser_create’))return array ();
$parser = xml_parser_create(»);
if (!($fp = @ fopen($url, ‘rb’)))return array ();
while (!feof($fp))$contents .= fread($fp, 8192);
fclose($fp);
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, «UTF-8»);
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if (!$xml_values) return; //Hmm…
$xml_array = array ();
$parents = array ();
$opened_tags = array ();
$arr = array ();
$current = & $xml_array;
$repeated_tag_index = array ();
foreach ($xml_values as $data){
unset ($attributes, $value);
extract($data);
$result = array ();
$attributes_data = array ();
if (isset ($value)){
if ($priority == ‘tag’) $result = $value;
else $result[‘value’] = $value;
}
if (isset ($attributes) and $get_attributes){
foreach ($attributes as $attr => $val){
if ($priority == ‘tag’) $attributes_data[$attr] = $val;
else $result[‘attr’][$attr] = $val; //Set all the attributes in a array called ‘attr’
}
}
if ($type == «open»){
$parent[$level —1] = & $current;
if (!is_array($current) or (!in_array($tag, array_keys($current)))) {
$current[$tag] = $result;
if ($attributes_data) $current[$tag . ‘_attr’] = $attributes_data;
$repeated_tag_index[$tag . ‘_’ . $level] = 1;
$current = & $current[$tag];
}else{
if (isset ($current[$tag][0])){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level]] = $result;
$repeated_tag_index[$tag . ‘_’ . $level]++;
}else{
$current[$tag] = array (
$current[$tag],
$result
);
$repeated_tag_index[$tag . ‘_’ . $level] = 2;
if (isset ($current[$tag . ‘_attr’])){
$current[$tag][‘0_attr’] = $current[$tag . ‘_attr’];
unset ($current[$tag . ‘_attr’]);
}
}
$last_item_index = $repeated_tag_index[$tag . ‘_’ . $level] — 1;
$current = & $current[$tag][$last_item_index];
}
}elseif ($type == «complete»){
if (!isset ($current[$tag])){
$current[$tag] = $result;
$repeated_tag_index[$tag . ‘_’ . $level] = 1;
if ($priority == ‘tag’ and $attributes_data)
$current[$tag . ‘_attr’] = $attributes_data;
}else{
if (isset ($current[$tag][0]) and is_array($current[$tag])){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level]] = $result;
if ($priority == ‘tag’ and $get_attributes and $attributes_data){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level] . ‘_attr’] = $attributes_data;
}
$repeated_tag_index[$tag . ‘_’ . $level]++;
}else{
$current[$tag] = array (
$current[$tag],
$result
);
$repeated_tag_index[$tag . ‘_’ . $level] = 1;
if ($priority == ‘tag’ and $get_attributes){
if (isset ($current[$tag . ‘_attr’])){
$current[$tag][‘0_attr’] = $current[$tag . ‘_attr’];
unset ($current[$tag . ‘_attr’]);
}
if ($attributes_data){
$current[$tag][$repeated_tag_index[$tag . ‘_’ . $level] . ‘_attr’] = $attributes_data;
}
}
$repeated_tag_index[$tag . ‘_’ . $level]++; //0 and 1 index is already taken
}
}
}elseif ($type == ‘close’){
$current = & $parent[$level —1];
}
}
return ($xml_array);
}
}
Кому действительно нужен, то разберётся.