[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вставка превю ролика с YouTube
Arni
Думаю рано или поздно с таким столкнетесь. Задача состоит в том, чтобы не вставлять ролики при выводе списком, а выводить просто картинку первых кадров ролика. Фокус в том что ютубе эти картинки уже приготовил для нас. А мое решение заключается в том чтобы эту картинку найти исходя из кода ролика. Вот и все.

Нам нужен класс.

http://sourceforge.net/projects/simplehtmldom/

И, нам нужна функция.


html = 'Это типа код ролика который дает ютуб';

function get_youtube_img($html){
$html = str_get_html($html);
foreach($html->find('iframe') as $element){
$img = explode('/',$element->src);
$img = 'http://i3.ytimg.com/vi/'.$img['4'].'/default.jpg';
return $img;
}
}


получаем нажу жипагу :)
$img = get_youtube_img($html);




Спустя 1 минута, 36 секунд (29.07.2011 - 22:53) jetistyum написал(а):
Божемой, и все это ради одной картинки?

Спустя 3 минуты, 21 секунда (29.07.2011 - 22:57) Arni написал(а):
Ну если хочеш вычесляй регуляркой. Тут скорее сама идея а не подход. Потому что мой подход это да, реально танк.

Спустя 4 минуты, 31 секунда (29.07.2011 - 23:01) alex12060 написал(а):
огого
Да уж лучше регулярками, чем этой шарадой О_о
Кстати, было бы не плохо, если ты бы свернул этот код )

Спустя 3 минуты, 56 секунд (29.07.2011 - 23:05) jetistyum написал(а):
Да к чему все это smile.gif регулярки, простыни кода ... Есть очень классная штука - oembed ... почитай, и ты узнаешь оочень много интересного, классного, прикольного, и забудешь про эту простыню как про страшный сон

Спустя 23 секунды (29.07.2011 - 23:05) Winston написал(а):
Цитата (alex12060 @ 29.07.2011 - 23:01)
Кстати, было бы не плохо, если ты бы свернул этот код )

Да.
Но этот посту походу уже не отредактируется т.к. нужно было сразу сворачивать

Спустя 1 минута, 59 секунд (29.07.2011 - 23:07) Arni написал(а):
Сколько шума подняли. Всем кто сломал колесико мышки приношу свои искренние соболезнования. Оставил только ссылку на класс. smile.gif

Спустя 1 минута, 38 секунд (29.07.2011 - 23:09) alex12060 написал(а):
Arni

Не, просто лень мотать вниз, а так, можно было не удалять,

Свернутый текст
а просто свернуть

Спустя 2 минуты, 54 секунды (29.07.2011 - 23:12) jetistyum написал(а):
к тому же даже без всех этих библиотек

урл- ссылка на видео
http://www.youtube.com/watch?v=ARMKBWpm-To&feature=relmfu
ссылка на превью
http://i2.ytimg.com/vi/ARMKBWpm-To/hqdefault.jpg

ну тут не нужно быть гением чтобы догадаться как получить превью любого видео на ютубе wink.gif

Спустя 1 час, 7 минут, 23 секунды (30.07.2011 - 00:19) Arni написал(а):
Даю гарантию что многие не догнали бы с первых минут.

Спустя 12 минут, 32 секунды (30.07.2011 - 00:32) Nikitian написал(а):
что там парсить-то?
Свернутый текст

//$code - идентификатор записи
$data = file_get_contents('http://www.youtube.com/embed/'.$code);
preg_match('|<title>(.*?)</title>|Uis',$data,$out['title']);
$out['title']=$out['title'][1];
preg_match('|"iurl": "(.*?)"|is',$data,$out['img']);
$out['img']=stripslashes($out['img'][1]);
$out['code']='<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/'.$code.'" frameborder="0" allowfullscreen></iframe>';

Дёргается страница исключительно чтобы получить титл

Для smotri.com

$data = file_get_contents('http://smotri.com/video/view/?id='.$code);
preg_match('|<link rel="image_src" href="(.*?)" />|is',$data,$out['img']);
$out['img']=$out['img'][1];
preg_match('|<meta name="title" content="(.*?)" />|is',$data,$out['title']);
$out['title']=trim(str_replace(array(iconv('cp1251','utf8','Видео "'),'"'),'',$out['title'][1]));
$out['code']='<object id="smotriComVideoPlayer" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390"><param name="movie" value="http://pics.smotri.com/player.swf?file='.$code.'&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.sm otri.com%2Fcskins%2Fblue%2Fskin_color.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2F skin_ng.xml" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="bgcolor" value="#ffffff" /><embed src="http://pics.smotri.com/player.swf?file='.$code.'&bufferTime=3&autoStart=false&str_lang=rus&xmlsource=http%3A%2F%2Fpics.sm otri.com%2Fcskins%2Fblue%2Fskin_color.xml&xmldatasource=http%3A%2F%2Fpics.smotri.com%2F skin_ng.xml" quality="high" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="480" height="390" type="application/x-shockwave-flash"></embed></object><br /><strong><a href="http://smotri.com/video/view/?id='.$code.'" target="_blank">'.$out['title'].'</a></strong>';

Rutube

$data = file_get_contents('http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id='.$code.'&utf=1');
$data = iconv('koi8-r','utf-8',$data);
preg_match('|<thumbnailLink>(.*?)</thumbnailLink>|is',$data,$tmp);
$out['img']=$tmp[1];
preg_match('|<title>(.*?)</title>|Uis',$data,$out['title']);
$out['title']=trim(str_replace(array('<![CDATA[',']]>'),'',$out['title'][1]));
preg_match('|<duration>(.*?)</duration>|is',$data,$out['length']);
$out['length']=explode(':',$out['length'][1]);
$out['length']=$out['length'][0]*60+$out['length'][1];
$out['code']='<OBJECT width="470" height="353"><PARAM name="movie" value="http://video.rutube.ru/'.$code.'"></PARAM><PARAM name="wmode" value="window"></PARAM><PARAM name="allowFullScreen" value="true"></PARAM><EMBED src="http://video.rutube.ru/'.$code.'" type="application/x-shockwave-flash" wmode="window" width="480" height="390" allowFullScreen="true" ></EMBED></OBJECT>';

VK

$data = file_get_contents('http://vkontakte.ru/video_ext.php'.urldecode($code));
preg_match('|<param name="flashvars" value="(.*?)"></param>|is',$data,$tmp);
$tmp[1]=str_replace('&','&',$tmp[1]);
parse_str(urldecode($tmp[1]),$tmp);
$out['title']=$tmp['md_title'];
$out['img']=$tmp['thumb'];
$out['code']='<iframe src="http://vkontakte.ru/video_ext.php'.$code.'" width="480" height="390" frameborder="0"></iframe>';

Vimeo

$data = file_get_contents('http://player.vimeo.com/video/'.$code);
preg_match('|<title>(.*?)</title>|Uis',$data,$out['title']);
$out['title']=$out['title'][1];
preg_match('|"thumbnail":"(.*?)"|is',$data,$out['img']);
$out['img']=stripslashes($out['img'][1]);
preg_match('|<div class="cp"><span>(.*?)</span>|is',$data,$out['length']);
$out['length']=explode(':',$out['length'][1]);
$out['length']=$out['length'][0]*60+$out['length'][1];

Всё это дёргает что возможно, в том числе и длительность ролика, описание, превьюшки, Писал под площадку, где вроде были проблемы с парсингом xml по уму, поэтому делал на регулярках всё.

Спустя 15 минут, 34 секунды (30.07.2011 - 00:47) Arni написал(а):
во какую я интересную тему начал оказывается smile.gif. Nikitian, спасибо.

Спустя 9 дней, 12 часов, 20 минут, 15 секунд (9.08.2011 - 13:08) YoMan написал(а):
А можно ли таким же методом получить название ролика ?
Кст, почему-то фишка не работает sad.gif

Спустя 10 дней, 1 час, 27 минут, 2 секунды (19.08.2011 - 14:35) Arni написал(а):
Цитата (YoMan @ 9.08.2011 - 10:08)
А можно ли таким же методом получить название ролика ?
Кст, почему-то фишка не работает sad.gif

Работает.

http://tatmsk.ru/

Можно и имя и все что угодно. Это просто навигация по элементам как в XML.


_____________
Ходить по воде и разрабатывать программы, следуя спецификации, очень просто… если они заморожены. (Edward V Berard).
________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.