Скрипт Universal Subtitles - как интегрировать с блогом...

Есть такой очень полезный онлайн сервис universalsubtitles.org он позволяет вам взять любое видео из интернета, создать к нему субтитры прямо на сайте (или загрузить уже готовые). И потом встроить это видео — так что ваши субтитры будут идти поверх него, с возможностью выбора языков. (Чтобы добавлять субтитры на ютубе, к примеру, надо быть владельцем этого видео, а тут — не надо быть владельцем, просто идет наложение на стороннее видео)

Так вот, встраиваются видео почему-то только таким способом

<script type="text/javascript" src="http://s3.www.universalsubtitles.org/embed.js">
(
  {"video_url": "http://www.youtube.com/watch?v=nTFEUsudhfs"}
)
</script>


Разумеется, это блокируется.

Вопрос: как переделать скрипт, чтобы будучи включённым в шаблоне сайта, в теле статей пользователи могли бы добавлять код вроде

{«video_url»: «www.youtube.com/watch?v=nTFEUsudhfs»}

(не важно какой, лишь бы его не зарубали на полпути)
и чтобы скрипт автоматически встраивал на это место видео.

Вообще, дайте пожалуйста наводку, в каком направлении двигаться. Я нечто подобное уже читал здесь. Там мелькала идея к создателям скрипта «напишите плагин». Но я не понял если честно.

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

avatar
В добавлении топика сделать условие, если в тексте есть код video, то добавлять этот код в БД, и, при выводе, если к топику есть видео — выводим код выше.
avatar
да, оставить встраивание как есть — думаю самое лучшее (ведь мало где будут подобные видео из всего объема постов — зачем его грузить на каждой странице)
но ведь скрипты в любом случае блокируются :(
как сделать, чтобы только этот определенный скрипт разрешался?

а потом надо будет создать кнопку в редактор «universal subtitle»
avatar
Вообще, дайте пожалуйста наводку, в каком направлении двигаться.

Переконфигурировать Жевикс и поколупать модуль текста.
avatar
ещё точнее — придумать тег, разрешить его и его атрибуты в Жевиксе, потом осуществить замену в модуле текста.
Ну и хорошо это все заправить в виде плагина.
avatar
))))) 3 дня как я ЛС установил (ну может неделя) — и уже плагин!
это будет слишком для меня
avatar
сегодня с полчаса- час вставлял блок «facebook like box». в итоге оказалось, что проблема мучений была, в файле шаблона в теге <div class=«block> забыл кавычку дописать.!!!
avatar
вам тогда ещё долго работать.
наймите людей
avatar
нанять людей чтобы кавычки ставить не забывали?
за наводку спасибо. сам бы не догадался наверное.
уже ко сну клонит. в общем я так понял.
создаю новый тег, допустим vimeo.com/393939
(сейчас когда добавляю его, он не отображается, а на его месте — ссылка). Затем я разрешаю его -> он будет отображаться?
или я в парсинге прописываю, чтобы на его место вставал изначальный код, как его на сайте Universal Subtitle дают?
:) а утро вечера мудренее.
avatar
нанять людей чтобы кавычки ставить не забывали?
нанять чтобы написали

создаете новый теги, например />
разрешаете его (specialvideo) и его аттрибут (id), в модуле текста дописываете в функции парсера свою функцию, которая заменят тег на код который вы указали выше с заменой параметров. Посмотрите как это сделано на замену тега video.

Ну а вообще всегда так подключать скрипт с чужого ресурса — опасно.
avatar
скушало
* создаете новый теги, например
<specialvideo id="sdSDFsdfvS" />
avatar
спасибо за исчерпывающий ответ.
Ну а вообще всегда так подключать скрипт с чужого ресурса — опасно.
даже если доверяешь ресурсу? ну и этот скрипт кстати можно же скопировать себе на сайта, и со своего сайта запускать… или все равно…
avatar
даже если доверяешь ресурсу?
ресурсы хакают. это факт. и такой ресурс, ЖС которого установлен на многих сайтах, явно кому-то может мозолить глаза.
avatar
а этот скрипт скопировать и от себя запускать — не выход?
avatar
я не знаю что скрипт запускает дальше. некоторые скрипты кроссдоменно не запустишь просто так.
avatar
у меня почти получилось задуманное.
заметил, что многие посты на тему устарели. например, добавлять разрешенные теги теперь надо в config/jevix.php

а теперь у меня проблема такая… — LS создает автоматические ссылки (т.е. добавляет тег
<a href=>
и это портит мне всё. из-за этого скрипт не запускается.
как отключить автом.ссылки внутри моего самодельного тега?
avatar
заметил, что многие посты на тему устарели. например, добавлять разрешенные теги теперь надо в config/jevix.php
так наоборот старались вынести конфиг чтобы было удобно его редактировать. Вы не представляете где он был раньше.

а теперь у меня проблема такая… — LS создает автоматические ссылки (т.е. добавляет тег как отключить автом.ссылки внутри моего самодельного тега?
я понимаю вы дописали вызов функции в public function Parser($sText)?
какой порядок вызова у вас там?
avatar
я в jevix.php разрешил новый таг: (universal subtitle video)
а в Text.class.php добавил в функцию VideoParser

$sText = preg_replace('/<usvideo>(.+)<\/usvideo>/Ui','<script type="text/javascript" src="http://s3.www.universalsubtitles.org/embed.js">($1)</script>',$sText);
return $sText;


и всё хорошо и почти в рабочем виде в итоге, но вместо

{«video_url»: «www.youtube.com/watch?v=nTFEUsudhfs»}

у меня появляется:

{«video_url»: "http://www.youtube.com/watch?v=nTFEUsudhfs"}

(т.е. срабатывает автоматическая ссылка — текст ссылки заменяется на активную). из-за этого скрипт субтитров не срабатывает
avatar
тут тоже даже внутри «code» автоматическая ссылка вылазит. изначально я написал без
а потом с
avatar
блин. в общем сначала было без a href, а потом с ним
avatar
а тег вы вставляете видимо таким образом:

<usvideo>{"video_url": "http://www.youtube.com/watch?v=nTFEUsudhfs"}</usvideo>

А можно было бы сократить до

<usvideo>nTFEUsudhfs</usvideo>

т.е. только к ИД ролика и проблема отпала бы
avatar
думаю так будет не удобно и возможно вообще не будет работать, потому что:

1) простым пользователям будет неудобно извлекать код (не у каждого мозгов хватит)

2) много разных комбинаций, там могут быть видео с Works with Ogg, WebM, flv, mp4, Youtube, Vimeo or Dailymotion — даже просто ссылка на видео может быть прямая с любого сайта

В общем, если поможете, обещаю сделать плагин и упаковать в коробку (и выложить тут бесплатно)
:)
avatar
я понимаю вы дописали вызов функции в public function Parser($sText)?
какой порядок вызова у вас там?

что у вас в


public function Parser($sText)

?
avatar
в public function Parser($sText) такой порядок:

$sResult=$this->FlashParamParser($sText);		
		$sResult=$this->JevixParser($sResult);	
		$sResult=$this->VideoParser($sResult);	
		$sResult=$this->CodeSourceParser($sResult);
avatar
намёк понял. меня порядок. пока либо вылазиют ошибки, либо ничего не происходит
avatar
$sResult=$this->FlashParamParser($sText);		
		$sResult=$this->JevixParser($sResult);	
		$sResult=$this->VideoParser($sResult);	
		$sResult=$this->CodeSourceParser($sResult);
avatar
пока либо вылазиют ошибки
конечно, если просто менять порядок. посмотрите на переменные — первый раз она берется из аргументов функции, потом уже обработанную внутреннюю переменную пускают по кругу функций.
avatar
когда придумал регулярными выражениями удалить теги ссылки, которые насильно выставляются жевиксом — всё равно не заработало. парился, пялился в экран долго. Потом заметил, что кавычки ещё жевикс заменяет на другие, которые скрипт не воспринимает как кавычки.

когда исправил кавычки, оказалось, что жевикс из моей изначальной ссылки ещё http:// удалил, — без него тоже скрипт не работает!

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


$sText = preg_replace('/<usvideo>(.+)<a href(.+)>(.+)<\/a>(.+)<\/usvideo>/Ui','<script type="text/javascript" src="http://s3.www.universalsubtitles.org/embed.js">($1$3$4)</script>',$sText);
		$sText = preg_replace('/«(.+)»/Ui','"$1"',$sText);	 
		$sText = preg_replace('/"www/Ui','"http://www',$sText);	
avatar
оказалось, что жевикс из моей изначальной ссылки ещё http:// удалил, — без него тоже скрипт не работает!
потому что вы берете третий параметр, а там само собой красивая ссылка ввв.ламбада.ком, а во втором ($2) как раз и хранится нормальная ссылка.

оно то работает но вы ведь таким образом весь текст в топике переворачиваете — все кавычки в тексте, и везде добавляете хттп: к ссылкам.
avatar
вот оно решение. отсюда вывод: «надо учить регулярные выражения»


$sText = preg_replace('/<usvideo>{«(.+)»: «<a(.+)>www(.+)<\/a>»}<\/usvideo>/Ui','<script type="text/javascript" src="http://s3.www.universalsubtitles.org/embed.js">({"$1": "http://www$3"})</script>',$sText);	
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.