С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 13

как прикрепить файл к видео

21.11.2012, 13:11. Показов 4362. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня вопрос следующего характера, я вставляю ссылку на видео с видеохостинга(you tube) на свой сайт, под каждым видеороликом хочу вставить кнопку на скачивание,
видефайлы залиты на файлобменник и вот в чем проблема мне надо чтобы под опредилённым видеороликом выводилась кнопка с ссылкой именно на этот ролик.другими словами как за опредилённым роликом закрепить опредилённый файл для скачивания.Зарание блогодарен за оказанную помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.11.2012, 13:11
Ответы с готовыми решениями:

Как в с++ прикрепить файл?
Как в с++ сделать так, чтобы пользователь сам прикреплял файл, который нужно прочитать?

Как прикрепить файл в GMailSender?
Доброго времени суток, ребята! Стоит следующий вопрос: как отправить файл, используя GMailSender? GMailSender sender = new...

Как прикрепить файл к письму?
Подскажите, пожалуйста, как можно к сообщению прикрепить файл и все это дело отправить получателю?

11
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
21.11.2012, 13:46
filius667, а ссылка для вывода видео с ютуба у вас откуда берётся, из БД?
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 13
21.11.2012, 14:13  [ТС]
нет я беру с youtuba ссылку и вставляю в плагин вот адрес страницы http://assasin3.ru/transit сайт сделан на wordpress плагин каторый выводит видео all video gallary
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
21.11.2012, 17:56
filius667, в чем главная задача что бы скачаивать видео или что бы скачивать видео именно с файлообменника?
1
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 13
21.11.2012, 19:44  [ТС]
ну тогда откуда будут их скачивать??? Если с хостинга, то это не вариант, сервер не потянет.
0
2 / 2 / 1
Регистрация: 25.10.2012
Сообщений: 61
21.11.2012, 20:03
filius667 а вы знаете mysql?
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 13
21.11.2012, 20:13  [ТС]
очень очень плохо!!!!!!!!!!
0
2 / 2 / 1
Регистрация: 25.10.2012
Сообщений: 61
21.11.2012, 20:31
Как идея:
создать таблицу (допустим video_links);
и в ссылке, методом GET отсылать id ссылки forexample(http://test.ru/video.php?id=1);
(в верхней строчке передавался id = 1)
и после подключаемся к базе данных, далее извлекаем все из таблицы(пользуемся присланым нам id), и записываем в переменную значение;
принтим переменнуб под видео (будет видно ссылку)

Добавлено через 1 минуту
понимаю, что с плохими знаниями mysql это будет трудно, но выполнимо (за подсказками можете обратиться ко мне)

Добавлено через 14 секунд
понимаю, что с плохими знаниями mysql это будет трудно, но выполнимо (за подсказками можете обратиться ко мне)
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 13
21.11.2012, 20:34  [ТС]
спасибо большое, попробую обязательно, потом напишу о результатах...
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
21.11.2012, 21:12
Цитата Сообщение от filius667 Посмотреть сообщение
ну тогда откуда будут их скачивать??? Если с хостинга, то это не вариант, сервер не потянет.
можно напрямую с ютуба скачивать и отдавать клиенту
0
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 13
21.11.2012, 21:47  [ТС]
каким образом я смогу отдавать видео желающим напрямую???
0
 Аватар для alpex
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.11.2012, 04:10
вот есть класс для скачивания видео с ютуб
Кликните здесь для просмотра всего текста
PHP
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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
<?php
 
class YT {
 
    /**
     * @var array $info - Video data
     */
    private static $info;
 
    /**
     * @var string $id - Video id
     */
    private static $id;
 
    /**
     * @var array $links - Links array
     */
    private static $links = array();
 
    /**
     * @var array $data - Media information about video
     */
    private static $data = array();
 
    /**
     * @var string $user_agent - useragent for getting data
     * Can be edited
     */
    private static $user_agent = 'Youtube Tools v.1';
 
    /**
     * @var bool $proxy - Use proxy
     * Can be edited (true, false)
     */
    private static $proxy = true;
 
    /**
     * @var array $proxy_list - List of the proxy servers
     */
    private static $proxy_list = array();
 
    /**
     * @var int $proxy_attempts - Number of attempts to use a proxy (Determined automatically)
     */
    private static $proxy_attempts = 0;
 
    /**
     * @var array $formats - Formats of youtube video
     */
    private static $formats = array(
            '5'=>'flv',
            '6'=>'flv',
            '34'=>'flv',
            '35'=>'flv',
            '18'=>'mp4',
            '22'=>'mp4',
            '37'=>'mp4',
            '38'=>'mp4',
            '83'=>'mp4',
            '82'=>'mp4',
            '85'=>'mp4',
            '84'=>'mp4',
            '43'=>'webm',
            '44'=>'webm',
            '45'=>'webm',
            '46'=>'webm',
            '100'=>'webm',
            '101'=>'webm',
            '102'=>'webm',
            '13'=>'3gp',
            '17'=>'3gp',
            '36'=>'3gp'
        );
 
    public static function init($id = null){
        self::$data = self::$links = self::$info = null;
        if(self::$proxy){
            $dir = realpath(dirname(__FILE__));
            self::$proxy_list = is_file($dir.'/proxy.txt') ? file($dir.'/proxy.txt') : array();
            if(empty(self::$proxy_list)) self::$proxy = false;
            self::$proxy_attempts = sizeof(self::$proxy_list);
        }
        self::$id = $id;
    }
 
    /**
     * Method for processing getting information about video
     * @param bool $proxy
     * @param int $i
     * @return array|null
     */
    public static function get_info($proxy = false, $i = 0){
 
        if(empty(self::$id)) die('Enter video id');
        if(!empty(self::$info)) return self::$info;
        # Get video data
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://www.youtube.com/get_video_info?video_id='. self::$id);
        # Use proxy
        if($proxy && self::$proxy){
            $proxy = self::$proxy_list[($i-1)];
            curl_setopt($ch, CURLOPT_TIMEOUT, 3);
            curl_setopt($ch, CURLOPT_PROXY, trim($proxy));
        }
        curl_setopt($ch, CURLOPT_USERAGENT, self::$user_agent);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec ($ch);
        curl_close ($ch);
 
        # Parsing data
        parse_str($data, $info);
 
        # Check the returned status and, if necessary, use a proxy
        if(@$info['status'] == 'ok') {
            self::$info = $info;
            return $info;
        }
        elseif($i<self::$proxy_attempts && self::$proxy)
            return self::get_info(true, ++$i);
        else
            exit('Video not available');
    }
 
    /**
     * Method for getting direct links to video
     * @return array
     */
    public static function get_links(){
        if(!empty(self::$links)) return self::$links;
        if(empty(self::$info)) self::get_info();
        $urls = ','.urldecode(self::$info['url_encoded_fmt_stream_map']);
/*foreach($urls as $key=>$val){
    echo "<div style='background:red;color:grey;'>";
    echo $key.' = '.$val.'<hr /></div>';
}*/
        $links_map = explode('url=', $urls);//здесь была запятая ,url=
/*foreach($links_map as $key=>$val){
    echo "<div style='background:black;color:orange;'>";
    echo $key.' = '.$val.'<hr /></div>';
}*/
        unset($links_map[0]);
        foreach($links_map as $tmp){
            $links = explode('&url=', $tmp);
            foreach($links as $link) {
                # Get number type of video
                preg_match('|\&itag\=([0-9]+)|', $link, $numb);
                # Get information of type of video
                preg_match('#(^|\D)'.$numb[1].'/([0-9]{2,4}x[0-9]{2,4})#', self::$info['fmt_list'], $format);
                # Link for video
                $link = preg_replace('|&itag='. $numb[1].'$|U', '', $link);
                # Create array of information of video
                self::$links[self::$formats[$numb[1]] .'-'. $format[2]] = array(self::$formats[$numb[1]], $format[2], str_replace(' ', '%20', $link));
 
            }
        }
        return self::$links;
    }
 
    /**
     * Method to save video to local path
     * @param $video - Video type
     * @param $path - Dir to save video
     * @param null|string $name - Name of video (without extension)
     */
    public static function save($video, $path, $name = null){
        if(empty(self::$links)) self::get_links();
        if(!isset(self::$links[$video])) die('Video `'. $video .'` not found');
 
        # Define name of video
        $name = empty($name) ? self::$info['title'] : $name;
        if($path[mb_strlen($path, 'utf-8')-1] != '/') $path .= '/';
        $url = self::$links[$video][2] . '&title='. urlencode($name);
        $ch = curl_init($url);
        # Handle for copy video
        $fo = fopen($path . $name . '.' . self::$links[$video][0], 'w');
        curl_setopt($ch, CURLOPT_USERAGENT, self::$user_agent);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FILE, $fo);
        curl_exec($ch);
        curl_close($ch);
        fclose($fo);
    }
 
    /**
     * Method for getting data about video
     * @return array
     */
    public static function get_data(){
        if(!empty(self::$data)) return self::$data;
        if(empty(self::$info)) self::get_info();
        $entry = simplexml_load_file('http://gdata.youtube.com/feeds/mobile/videos/' . self::$id);
        $media = $entry->children('http://search.yahoo.com/mrss/');
        $entry->registerXPathNamespace('feed', 'http://www.w3.org/2005/Atom');
        $related = $entry->xpath("feed:link[@rel='http://gdata.youtube.com/schemas/2007#video.related']");
        $related = (string)$related[0]['href'];
        $data = array(
            'keywords' => self::$info ['keywords'],
            'title' => self::$info ['title'],
            'description' => (string)$media->group->description,
            'category' => (string)$media->group->category,
            'duration' => self::$info ['length_seconds'],
            'views' => self::$info ['view_count'],
            'rate' => self::$info ['avg_rating'],
            'thumbnails' => array(
                'big' => self::$info ['iurlmaxres'],
                'small' => self::$info ['iurlsd'],
                'default' => self::$info ['thumbnail_url'],
                1 => (string)$media->group->thumbnail[1]->attributes()->url,
                2 => (string)$media->group->thumbnail[2]->attributes()->url,
                3 => (string)$media->group->thumbnail[3]->attributes()->url
            ),
            # Link for get related videos
            'related' => $related
        );
        self::$data = $data;
        return $data;
    }
 
    /**
     * Method for search video
     * @param string $query - Query string
     * @param string $order - Type of order video (relevance, published, viewCount, rating)
     * @param int $start - Number of first element
     * @param int $count - Count of return results
     * @param array $need - Needed fields to return, may be id, title, description, author, thumbnails, keywords, player
     * @return array
     */
    public static function search($query, $need = array('id', 'title', 'description',  'author', 'thumbnails', 'keywords', 'player', 'duration'), $order = 'published', $start = 1, $count = 10) {
        # Orders type
        $allowOrder = array('relevance', 'published', 'viewCount', 'rating');
        if(!in_array($order, $allowOrder)) exit('Wrong type of order');
 
        # Make url
        $url = 'http://gdata.youtube.com/feeds/api/videos?vq='. urlencode($query) .'&orderby='. $order .'&start-index='.
            intval($start) .'&format=1&max-results='. intval($count);
 
        # Get data
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_USERAGENT, self::$user_agent);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec ($ch);
        curl_close ($ch);
        if(strpos($data, '<?xml') === false) exit('Can\'t processing video data');
        $data = simplexml_load_string($data);
 
        # Total results
        $return = array('count' => (int)$data->children('http://a9.com/-/spec/opensearchrss/1.0/')->totalResults);
 
        # Parsing data
        if(sizeof($data->entry)>0){
            foreach($data->entry as $entry){
                $now = array();
                if(in_array('id', $need))
                    $now += array('id' => basename($entry->id));
                if(in_array('title', $need))
                    $now += array('title' => (string)$entry->title);
                if(in_array('description', $need))
                    $now += array('description' => (string)$entry->content);
                if(in_array('author', $need))
                    $now += array('author' => (string)$entry->author->name);
                if(in_array('thumbnails', $need) || in_array('keywords', $need) || in_array('player', $need)){
                    $media = $entry->children('http://search.yahoo.com/mrss/');
                }
                if(in_array('keywords', $need))
                    $now += array('keywords' => (string)$media->group->keywords);
                if(in_array('player', $need))
                    $now += array('player' => (string)$media->group->player->attributes()->url);
                if(in_array('thumbnails', $need))
                    $now += array('thumbnails' => array(
                        'default' => (string)$media->group->thumbnail[0]->attributes()->url,
                        1 => (string)$media->group->thumbnail[1]->attributes()->url,
                        2 => (string)$media->group->thumbnail[2]->attributes()->url,
                        3 => (string)$media->group->thumbnail[3]->attributes()->url
                    ));
                if(in_array('duration', $need))
                    $now += array('duration' => (int)$media->children('http://gdata.youtube.com/schemas/2007')
                        ->duration->attributes());
                $return[] = $now;
            }
            return $return;
        }  else return array();
    }
 
    /**
     * Method for getting video and output to browser (test method)
     * @param string $video - Type video for getting
     */
    public static function get($video) {
        if(empty(self::$links)) self::get_links();
        if(!isset(self::$links[$video])) die('Video `'. $video .'` not found');
 
        $url = self::$links[$video][2] .'&title='.urlencode(self::$info['title']);
        $headers = get_headers($url);
        foreach($headers as $header){
            header($header);
        }
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_USERAGENT, self::$user_agent);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
        curl_exec($ch);
        curl_close($ch);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2012, 04:10
Помогаю со студенческими работами здесь

Как прикрепить *.lib файл в с++?
как прикрепить *.lib файл в с++? У меня есть *.lib (libdc_client.lib) файл и и *.h (dc_win32.h) header файл. У меня комл. еррор. ...

как прикрепить excel файл к БД
Вообщем дали задание суть которого такова - есть некоторые данные, которые находятся в excel`e, их нужно перенести в SQL server и сделать...

Как прикрепить файл к письму?
Добрый день, кто может мне помочь? Мне надо прикрепить файл к письму, а у меня не получается. Вот фрагмент кода: if...

Как прикрепить к письму файл и отослать?
Как прекрепить к письму &lt;FONT color=#ff1111&gt;файл и отослать ?

Как прикрепить входной файл к коду на С++
Как сделать так, чтобы при отправки кода вместе с кодом отправлялся и входной файл? При получение кода получатель вместе с кодом должен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru