Автоматически генерируем тумбнейлы для Youtube роликов и используем их вместе с Lytebox

Итак, есть задача, на сайте выводятся Youtube роликивот в таком формате:

<iframe title=»YouTube video player» width=»480″ height=»390″ src=»http://www.youtube.com/embed/ajNC3W-Dlqk» frameborder=»0″ allowfullscreen></iframe>

Роликов на одной странице много, и что бы не нагружать пользователей их загрузкой, было принято решение подменять их ссылками в виде тумбнейлов, при клике на которые Lytebox будет выводить ролик в отдельном div-е. При этом формат размещения данных никто менять не хотел,  вот что получилось:

<?
    //  $post_new - сообщение которое мы будем обрабатывать
    $post_new= 'Ролик №1:<br> <iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/ajNC3W-Dlqk" frameborder="0" allowfullscreen></iframe><br>
    Ролик №2:<br> <iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/c4XPVvMm4j4" frameborder="0" allowfullscreen></iframe>';
    // Папка для тумбнейлов
    $folder = 'cache';
    
    preg_match_all('/src=[\'"]?([^\'" >]+)[\'" >]/', $post_new, $img);
     foreach($img[1] as $key => $link){
        $tmp_link = explode('/',$link);
        $file = explode('.',array_pop($tmp_link));
        if($tmp_link[2] == 'www.youtube.com'){   
            $name = &$file[0];
            $new_link = 'src="'.$folder.'/'.$name.'_tumb.jpg"';
            if (!file_exists($folder.'/'.$name.'_tumb.jpg')) {
                $homepage = file_get_contents('http://img.youtube.com/vi/'.$name.'/0.jpg');
                file_put_contents($folder.'/'.$name.'_tumb.jpg' , $homepage);
                $homepage = @imagecreatefromjpeg($folder.'/'.$name.'_tumb.jpg');
                $im = @imagecreatefrompng('images/play.png');
                $watermark_width = imagesx($homepage);
                $watermark_height = imagesy($im);
                $alpha_level = 60;
	        //Добавляем вотермарк
                imagecopymerge($homepage, $im, 0, 0, 0, 0, 480, 360, $alpha_level);
                imagejpeg($homepage,$folder.'/'.$name.'_tumb.jpg',75);
            }
            $replace = '<iframe title="YouTube video player" width="480" height="390" src="'.$link.'" frameborder="0" allowfullscreen></iframe>';
            //echo $replace;
            $post_new = str_replace($replace,'<a href="'.$link.'" class="lytebox" data-lyte-options="width:560 height:349"><img '.$new_link.'/></a>',$post_new);
        }
    }
?>

Используемый мною вотермарк

Демонстрация работы скрипта

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>