Плагин "Main Preview" автоматическое создание превью при добавление видео

При создании топика с видео, без проблем автоматически создаются превью с сервисов (Youtube, Vimeo, Rutube) с использование плагина «Main Preview».

При добавление видео с VK.com и Dailymotion.com превью автоматически не создаются! Если, я правильно понял необходимо в файл ../plugins/mainpreview/classes/modules/main/Main.class.php добавить поддержку этих сервисов.

Для сервиса Dailymotion.com превью видео хранятся по адресу:
api.dailymotion.com/video/ID-VIDEO?fields=thumbnail_medium_url

Может у кого есть уже готовое решение для VK и Dailymotion.

12 комментариев

avatar
Попробуйте (не проверял):
/**
 * Поиск видео с Dailymotiomn
 *
 * @param $oTopic
 * @return null|string
 */
public function AnalysisTopicDailymotion($oTopic) {
    $sImage=null;
    $regexes = array(
        '#<object[^>]+>.+?http://www\.dailymotion\.com/swf/video/([A-Za-z0-9]+).+?</object>#s', // Dailymotion flash
        '#//www\.dailymotion\.com/embed/video/([A-Za-z0-9]+)#' // Dailymotion iframe
    );
    foreach ($regexes as $regex) {
        if (preg_match($regex, $oTopic->getText(),$aMatch)) {
            $sImage=json_decode(file_get_contents("https://api.dailymotion.com/video/{$aMatch[1]}?fields=thumbnail_url"));
            $sImage=$sImage->thumbnail_url;
        }
    }
    return $sImage;
}

Не забудьте добавить Dailymotion сюда
avatar
Спасибо огромное, отлично работает!

А можно как-то для VK.com прикрутить, превью видео сохраняется по адресу {data-thumb=«cs7065.vk.me/c308928/u198969547/video/l_7e21964e.jpg»} — взял из кода страница или может как-то через API VK?
avatar
Не проверял…
/**
 * Поиск видео с VK
 *
 * @param $oTopic
 * @return null|string
 */
public function AnalysisTopicVK($oTopic) {
    $regexes = array(
        '#(//(?:www\.)?vk\.com/video_ext\.php\?oid=\-?[0-9]+(?:&|&\#038;|&)id=\-?[0-9]+(?:&|&\#038;|&)hash=[0-9a-zA-Z]+)#', // URL
    );
    foreach ($regexes as $regex) {
        if (preg_match($regex, $oTopic->getText(),$aMatch)) {
            $request="http:{$aMatch[1]}";
            $request=html_entity_decode($request);
            $response=file_get_contents($request);
            $doc=new DOMDocument();
            @$doc->loadHTML($response['body']);
            $metas=$doc->getElementsByTagName('img');
            for ($i=0;$i<$metas->length;$i++) {
                $meta=$metas->item($i);
                if ($meta->getAttribute('id')=='player_thumb') {
                    $sImage=$meta->getAttribute('src');
                    break;
                }
            }
        }
    }
    return $sImage;
}
avatar
При добавлении видео
<video>https://vk.com/video_ext.php?oid=-102455692&id=171899838&hash=c04a122f0cccba4a&hd=2</video>
падает с ошибкой
Notice: Undefined variable: sImage in E:\OpenServer\OpenServer\domains\localhost\www\livestreet\plugins\mainpreview\classes\modules\main\Main.class.php on line 198

Warning: Cannot modify header information - headers already sent by (output started at E:\OpenServer\OpenServer\domains\localhost\www\livestreet\plugins\mainpreview\classes\modules\main\Main.class.php:198) in E:\OpenServer\OpenServer\domains\localhost\www\livestreet\engine\include\function.php on line 234

Warning: Cannot modify header information - headers already sent by (output started at E:\OpenServer\OpenServer\domains\localhost\www\livestreet\plugins\mainpreview\classes\modules\main\Main.class.php:198) in E:\OpenServer\OpenServer\domains\localhost\www\livestreet\engine\include\function.php on line 235
avatar
добавьте сверху $sImage=null;, забыл…
avatar
Теперь ошибки нет, но превью не создается?
avatar
дайте код видео «на выходе»
avatar
<iframe src="https://vk.com/video_ext.php?oid=-102455692&id=171899838&hash=c04a122f0cccba4a&hd=2" width="720" height="405" frameborder="0"></iframe>
avatar
как вариант, еще попробуйте s сюда добавить $request="https:{$aMatch[1]}";
avatar
Спасибо! Но и так, превью не хочет создаваться.
avatar
/**
 * Поиск видео с VK
 *
 * @param $oTopic
 * @return null|string
 */
public function AnalysisTopicVK($oTopic) {
    $sImage=null;
    $regexes = array(
        '#(//(?:www\.)?vk\.com/video_ext\.php\?oid=\-?[0-9]+(?:&|&\#038;|&)id=\-?[0-9]+(?:&|&\#038;|&)hash=[0-9a-zA-Z]+)#', // URL
    );
    foreach ($regexes as $regex) {
        if (preg_match($regex, $oTopic->getText(),$aMatch)) {
            $request="http:$aMatch[1]";
            $request=html_entity_decode($request);
            $response=file_get_contents($request);
            $doc=new DOMDocument();
            @$doc->loadHTML($response['body']);
            $metas=$doc->getElementsByTagName('img');
            for ($i=0;$i<$metas->length;$i++) {
                $meta=$metas->item($i);
                if ($meta->getAttribute('id')=='player_thumb') {
                    $sImage=$meta->getAttribute('src');
                    break;
                }
            }
        }
    }
    return $sImage;
}
avatar
Спасибо огромное, отлично работает!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.