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

vimeo.com

vimeo.com

Простой класс для работы с 3 основными видеосервисами. Класс простой и написан на скорую руку, однако вы можите его доработать или использовать в таком виде)

пример кода для получения информации о видео на основе кода плеера:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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>';
}


код самого класса:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
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);
    }
}
Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru TEXT LINK Mister Wong

Читай с RSS. Не пропусти интересное)

Теги:

Вторник, 17 Мар 2009 PHP, Мой скрипт

3 комментария на Класс для работы с YouTube, RuTube, Vimeo.com

  1. Интересно. А можно в кратце методы его описать и рекомендации по применению?
    Недавно писали о том, как разместить видео на своём сайте , можем включить описание вашего класса с ссылкой на вас, во второй части, если хотите.

  2. Зоя on 24 Мар 2009
  3. Зоя, это простенький класс работающий с xml перечисленных сервисов, пример использования в посте)
    Можите опубликовать, желательно с сылкой)

  4. DrNemo on 24 Мар 2009
  5. Ну, тут уж дело ваше, просто любой уважающий себя ленивый программер в чужом коде просто так разбираться редко станет :)

  6. Зоя on 25 Мар 2009

Ваш отзыв

Читать в Яндекс.Ленте
регистрация доменов
Зарегистрируй себе домен!
.RU - 99 рублей в год
www.
Блогун - реклама в блогах. Хостинг для блогов

Поиск

 

Комментарии