Класс для работы с YouTube, RuTube, Vimeo.com

Простой класс для работы с 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>';
}
код самого класса:
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' => '',
                '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);
    }
}
Кому действительно нужен, то разберётся.

Запись навигация

Top