Вставка видео из Вконтакте, Livestreet 0.4

47
Давно хотел сделать возможность добавления видео из вконтакте.

Нам понадобится отредактировать файл: engine/modules/text/Text.class.php
Update 14.07.2010: Под 0.3.1 тоже работает.

Простая версия


Открываем, ищем:
public function VideoParser($sText) {
		/**
		 * youtube.com
		 */		
		$sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<object width="425" height="344"><param name="wmode" value="opaque"></param><embed src="http://www.youtube.com/v/$1&hl=en" type="application/x-shockwave-flash" wmode="opaque" width="425" height="344"></embed></param></embed></object>', $sText);		
		/**
		 * rutube.ru
		 */		
		$sText = preg_replace('/<video>http:\/\/(?:www\.|)rutube.ru\/tracks\/\d+.html\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<OBJECT width="470" height="353"><param name="wmode" value="opaque"></param><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=662118"></PARAM><EMBED src="http://video.rutube.ru/$1" type="application/x-shockwave-flash" wmode="opaque" width="470" height="353" allowFullScreen="true" flashVars="uid=662118"></embed></param></EMBED></OBJECT>', $sText);				

и после добавляем код:

		/**
		 * vkontakte.ru
		 */		
		$sText = preg_replace('/<video>http:\/\/vkontakte\.ru\/(.*)<\/video>/Ui', '<iframe src="http://vkontakte.ru/$1" width="607" height="360" frameborder="0"></iframe>', $sText);


На этом можно закончить, и копировать url видео из кода, который появляется по ссылке «Получить код видео» (код обернут в тег iframe).

Пример использования.
Вконтакте нажимаем ссылку «получить код видео», получаем нечто вроди:
<iframe src="http://vkontakte.ru/video_ext.php?oid=22344263&id=136953491&hash=3fe77bef85c2d9d8" width="607" height="360" frameborder="0"></iframe>

Извлекаем url: vkontakte.ru/video_ext.php?oid=22344263&id=136953491&hash=3fe77bef85c2d9d8 (обязательно с http:// вначале).
И вставляем его в лайвстрит в тег video.

Продвинутое использование


Для тех, кто хочет упростить жизнь своим пользователям и позволять им вставлять код целиком, который предлагает вконтакте для вставки на сайт, необходимо сделать еще одно добавление.

Тот же файл, на несколько строк ниже:
/**
	 * Парсит текст
	 *
	 * @param string $sText
	 */
	public function Parser($sText) {
		$sResult=$this->FlashParamParser($sText);
	

после этого добавляем код:
$sResult=preg_replace('/<iframe src=\"http:\/\/vkontakte\.ru\/(.*)\"(.*)\"><\/iframe>/Ui','<video>http://vkontakte.ru/$1</video>',$sResult);

Код выше меняет html код с тегом iframe, который предлагает вконтакте на код <videо> </videо>

Пример использования.
Вконтакте нажимаем ссылку «получить код видео», получаем нечто вроди:
<iframe src="http://vkontakte.ru/video_ext.php?oid=22344263&id=136953491&hash=3fe77bef85c2d9d8" width="607" height="360" frameborder="0"></iframe>

Вставляем этот код к нам на страницу, без каких-либо правок. Радуемся.

Комментарии (44)

RSS свернуть / развернуть
в закладки
спасибо
-2
а то что тег iframe не доходит до строчки обработки?:
$this->oJevix->cfgSetTagCutWithContent(array('script', 'iframe', 'style'));
-1
извините, функции в другой последовательности вызываются.
+1
извините, функции в другой последовательности вызываются.
0
код работает. если используете tinymce, то нужно при его инициализации добавить:
extended_valid_elements : "iframe[name|src|framespacing|border|frameborder|scrolling|title|height|width]",

и тогда как обычно вставляется видео — при нажатии на иконку видео, вставляется код.
0
Подскажите, пожалуйста, в какой файл вставлять? я так подозреваю что в tiny_mce_src.js
и куда именно?
А то я сделал поиск по «extended_valid_elements» — в этом файле таких подстрок довольно много.
0
в 0.3 не работает(
-3
А реально ли это как-то сделать в виде плагина для ЛС 0.4 и выше?
+2
зачем минусить… не понятно…
сделал всё как здесь написано на 0.3, всё равно трёт видео, ничего не отображается, кто-нибудь может подсказать в чём трабла?
-1
на каком этапе трёт видео на сервере или на клиенте? какой визуальный редактор? стандартный или тайни? если тайни, то см livestreet.ru/blog/tips_and_tricks/4823.html#comment72148
0
Под 0.3.1 работает. Вы видимо допустили ошибку и не правильно вставили код.
+1
правил здесь:classes/modules/sys_text/text.class.php

после тех строчек как здесь указано.
пробовал в стандартном редакторе 2 варианта

видео после публикации не появляется
0
Закачайте куда-нибудь ваш classes/modules/sys_text/text.class.php, чтобы посмотреть почему у вас не работает.
0
у меня такая же ситуация, код залил вот сюда.
просто после добавления сообщения, с видео, появляется пустой пост, и все.
0
У вас ошибка в 122 строчке:
/**
                 * youtube.com
                 */
                $sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<object width="425" height="344"><param name="wmode" value="opaque"></param><param name="wmode" value="opaque"></param><embed src="http://www.youtube.com/v/$1&hl=en" type="application/x-shockwave-flash" wmode="opaque" width="425" height="344"></embed></embed></param></param></embed></object>', $sText);
                /**
                 * rutube.ru
                 */
                $sText = preg_replace('/<video>http:\/\/(?:www\.|)rutube.ru\/tracks\/\d+.html\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<OBJECT width="470" height="353"><param name="wmode" value="opaque"></param><param name="wmode" value="opaque"></param><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=662118"></PARAM><EMBED src="http://video.rutube.ru/$1" type="application/x-shockwave-flash" wmode="opaque" width="470" height="353" allowFullScreen="true" flashVars="uid=662118"></embed></embed></param></param></EMBED></OBJECT>', $sText);
                return $sText; //вот тут ошибка
                /**
                 * vkontakte.ru
                 */
                $sText = preg_replace('/<video>http:\/\/vkontakte\.ru\/(.*)<\/video>/Ui', '<iframe src="http://vkontakte.ru/$1" width="607" height="360" frameborder="0"></iframe>', $sText);


Нужно так:
/**
                 * youtube.com
                 */
                $sText = preg_replace('/<video>http:\/\/(?:www\.|)youtube\.com\/watch\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<object width="425" height="344"><param name="wmode" value="opaque"></param><param name="wmode" value="opaque"></param><embed src="http://www.youtube.com/v/$1&hl=en" type="application/x-shockwave-flash" wmode="opaque" width="425" height="344"></embed></embed></param></param></embed></object>', $sText);
                /**
                 * rutube.ru
                 */
                $sText = preg_replace('/<video>http:\/\/(?:www\.|)rutube.ru\/tracks\/\d+.html\?v=([a-zA-Z0-9_\-]+)<\/video>/Ui', '<OBJECT width="470" height="353"><param name="wmode" value="opaque"></param><param name="wmode" value="opaque"></param><PARAM name="allowFullScreen" value="true"></PARAM><PARAM name="flashVars" value="uid=662118"></PARAM><EMBED src="http://video.rutube.ru/$1" type="application/x-shockwave-flash" wmode="opaque" width="470" height="353" allowFullScreen="true" flashVars="uid=662118"></embed></embed></param></param></EMBED></OBJECT>', $sText);

                /**
                 * vkontakte.ru
                 */
                $sText = preg_replace('/<video>http:\/\/vkontakte\.ru\/(.*)<\/video>/Ui', '<iframe src="http://vkontakte.ru/$1" width="607" height="360" frameborder="0"></iframe>', $sText);
                return $sText;

rghost.ru/2128681
0
вот спасибо, вам!
теперь все работает великолепно!:)
0
Не совсем в тему топика, но тем не менее не хочется плодить топики ради пары вопросов.

Возможно ли подобное «продвинутое использование», как в данном примере со вставкой видео с ВКонтакте, применить и к YouTube, RuTube видео? То есть чтобы пользователь мог добавить просто код плеера в топик.

И еще одно. В YouTube видео есть такой момент, что люди зачастую используют видео с дополнительным текстом в конце ссылки. Бывает, что просто переходят на похожий ролик и ссылка получается вида: www.youtube.com/watch?v=11111111111&feature=related

Каким образом можно удалить &feature=related, чтобы видео отображалось? Или это моя индивидуальная проблема и искать нужно у себя где-то?

Код движка практически не менял, кроме изменения размера видео и добавления видео с контакте.

Заранее благодарю за ответы ))
0
упс. на тему продвинутого использования для ютуб погорячился. Случайно пробовал битый код вставить )) Все работает =))

А вот с окончанием &feature=related по прежнему не эмбардится плеер =/
-1
LS 0.4.2
Простая версия — работает отлично.
Продвинутое использование — неработает. Все делал как написано выше.
Вот мой Text.class.php
0
Также при простой версии фрейм с видео перекрывает все всплывающие окна (например окно авторизации)
0
Моё скромное мнение. По хорошему, разработчики движка давно уже должны были сами решить эту проблему и выпустить апдейт.
-1
LS 0.4.2 — работает отлично простая версия.
но есть некрасивость, в том что: к примеру при авторизации,
видео из вконтакте закрывает окно ввода пароля на половину,
Safari
Хром
Опера
— в 8 эксплорере (авторизация на новой странице)
в мазиле часть окна заднего плана скрывается (терпимо)
0
LS 0.3
Простая версия работает, расширенная напрочь отказывается
0
  • avatar
  • Xmk
  • 17 сентября 2010, 02:31
Я думаю ошибка здесь
0
Я думаю в таком случае не работала бы и обычная версия :)
0
точно… не углядел
0
продвинутый код работает! Спасибо! ))
0
привет! я сделал все, как было описано. но, при вставке кода, в админке ролик появляется. а вот при публикации поста — он пропадает.

в чем может быть затык?
0
У меня также. Ни в какую не хочет(
Да, поддерживаю мутацию хака в плагин)
0
Аналогично. В чём проблема?
0
кто может оформить в плагин плачу 10 у.е =)) я думаю я не один такой =))
0
Все варианты перепробовал, ну никак не хочет видео из вконтакат вставляться. Кто может в плагин сделать? Ну или как это делаетс], может я сам возьмусь)
0
  • avatar
  • veds
  • 07 декабря 2010, 10:08
Получилось?
Могу выслать вам отредактированный Text.class.php пишите в личку.
0
если исходить из принципов сообщества, то стоило бы выложить решение на всеобщий доступ
может кому-то пригодится
0
Не вопрос.
Вот выкладываю на шару исправленный Text.class.php с возможностью добавления ссылки види
<iframe src="http://vkontakte.ru/video_ext.php?oid=22344263&id=136953491&hash=3fe77bef85c2d9d8" width="607" height="360" frameborder="0"></iframe>
0
Версия 0.4.2. Сделал все как на верху. Все два варианта. В редакторе пояляется плеер, добавил новость, а в новости пусто почему так?
0
Все сделал отключил редактор tiny
0
кто может оформить в плагин плачу 10 у.е =)) я думаю я не один такой =))
Держите livestreetcms.com/addons/view/104/

Пока на модерации, можно скачать отсюда — rghost.ru/3689548
0
Доброго времени суток!
Пробовал прописывать в Text.class.php как в первом варианте так и во втором, пробовал активировать плагин… а видео с ВКонтакте не работает.
По первому варианту: видео ссылка /видео — после опубликования получается активная ссылка
По второму варианту: ничего нет :) т.е. в редакторе видно, что видео подгрузилась, а после опубликования его нет.
Подскажите пожалуйста в чем дело.
Заранее благодарю.
0
у меня тоже не получилось не работает
0
Кэш попробуйте почистить
0
спасибо но отказался от этого плагина на данный момент
0
Здравствуйте народ у кого есть файл: engine/modules/text/Text.class.php
при стандартном варианте я так понял ютуб рутюб и + плагин видосы из контакта есть еще куча видео хостов у кого больше этих трех можете поделиться? буду очень признателен
0
Ребят, кто-то сможет мне все это настроить?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.