Создание парсера для импорта видео

Документ актуален для InstantVideo 2.X

В InstantVideo2 поддержку импорта по ссылке с нужных вам сайтов-доноров можно сделать не прибегая к программированию, достаточно иметь представление о регулярных выражениях. Цель этой статьи не научить вас разбираться с регекспами, а рассказать как их применять уже в контексте нашего движка. Документация по регулярным выражениям вполне подробно описана здесь, здесь и здесь. И наверняка есть еще много интересных источников на эту тему, оставим это на ваше усмотрение.

Добавление нового провайдера начинается с нажатия ссылки "Добавить провайдера" и ввода линка на любой ролик необходимого сайта-донора.

добавить парсер

проверка ссылки сайта

После чего страница по указанной ссылке проверяется на предмет автоматического распознавания данных видео в форматах oEmbed или Open Graph.

Если поддерживаются форматы oEmbed и/или Open Graph.

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

форматы oEmbed и Open Graph

Если все получено верно, то необходимо указать название провайдера (в произвольной форме) и нажать на кнопку "Добавить провайдера". После чего он появится в общем списке.

видео провайдер в списке

У добавленного провайдера появится в колонке действий четыре иконки (слева направо): экспортировать (для дальнейшего распространения например), опубликовать в общем каталоге клиентов, редактировать данные, которые указывались при создании и удалить. Еще может быть иконка настроек провайдера, где можно указать плеер, ретрансляцию и другие параметры. Но в данном примере провайдер пока этого не поддерживает. Узнаем, может ли указанный провайдер поддерживать прямое воспроизведение или ретрансляцию в своем плеере, для этого нажмем на иконку с изображением карандаша.

редактирование данных провайдера

И добавим для поля регулярные выражения файлов следующее:

#file:"([^"]+)#uis

Это регулярное выражение составлено именно для этого сайта и не подойдет для других. После ввода в поле регулярного выражения, его тут же можно проверить, нажав соответствующую кнопку, после чего должно появится окно с прямой ссылкой на файл воспроизведения. Значит мы все составили верно.

Сохраним данные и увидим, что появилась еще иконка настроек

провайдер в списке с иконкой опций

где можно уже указать настройки:

настройки провайдера

Переменная seek в 90% случаев называется start, поэтому меняйте это значение, если точно уверены что делаете. Этот параметр добавляется к ссылке на файл при перемотке ролика до полной его загрузки - так называемый псевдостримминг. В значение параметра могут передаваться байты, секунды или миллисекунды, в зависимости от плеера и типа файла.

В поле "Использовать ретрансляцию" указывается сервер ретрансляции. Если у вас нет скрипта мультисерверности, то там будет всего два пункта: ваш текущий сервер и "не использовать". В случае, если выбрано не использовать ретрансляцию видео файлов, то будет показан оригинальный плеер сайта-донора. Это полезно использовать, если сайт, с которого вы парсите ролики, изменил алгоритм формирования ссылок и чтобы не терять посетителей вы показываете им временно оригинальный плеер.

В поле "Время жизни временной ссылки на файл" указывается количество минут, в течении которых движок хранит полученную прямую ссылку на видео. Зачастую видео сайты делают ссылки на файлы воспроизведения динамическими, которые помимо привязки к ip адресу еще и привязываются к какому-то временному промежутку. Промежуток обычно выясняется экспериментально.

Во вкладке "Плеер" можно выбрать плеер, в котором будут воспроизводиться ролики этого провайдера и скин плеера.

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

Если не поддерживаются форматы oEmbed и/или Open Graph.

Если движок не обнаружил на выбранном сайте данных этих форматов, то открывается форма, где все параметры роликов можно описать регулярными выражениями: для названия, описания, длительности и так далее.

регулярные выражения для видео парсинга

Обычно порядок действий такой:

  • Открывается исходный код страницы любого ролика с необходимого сайта;
  • Визуально ищется нужное поле, например название, описание;
  • Составляется регулярное выражение для получения из этого текста нужной строки;
  • Регулярное выражение записывается в поле;
  • Справа или снизу от поля есть ссылка "проверить", нажав на которую вы проверяете работоспособность составленного регекспа. Если все составлено верно, то во всплывающем окне будет показана строка, например название ролика, описание, длительность и т.п.;

Обязательные поля:

  • Регулярные выражения файлов;
  • Регулярное выражение для изображения;
  • Регулярное выражение для названия.

Отдельно отметим поля "Регулярное выражение для iframe ссылки плеера" и "Регулярное выражение для id ролика". Первое поле очень желательно заполнять, т.к. вы всегда сможете отключить ретрансляцию и хоть и оригинальный плеер, но он будет работать в любом случае. Второе поле Поможет вам избежать повторов импорта одинаковых роликов.

В полях "Регулярные выражения файлов" и "Регулярное выражение для изображения" поддерживается мини скриптовый язык. О нем, его назначении и синтаксисе вы можете прочитать в этой статье.

Кроме того, во всех полях поддерживается ключевое слово {concat}, справа или слева от которого обязательно должно быть регулярное выражение, также поддерживается ключевое слово {domain}, обозначающее домен сайта. Обратите внимание, что регулярные выражения обязательно должны быть в символах "решетка" #, так движок распознает их начало. Все это полезно вот в таких случаях:

http://{domain}{concat}#flashvars.imageUrl = "([^"]+)#uis

Т.е. на неком сайте ссылка на постер ролика имеет относительный вид, без имени домена. Такой конструкцией мы сделаем ссылку абсолютной и пригодной для работы с этим изображением. Справа от {concat} выполнится регулярное выражение, а слева подставится http:// и имя домена.

Все, добавляемые таким образом провайдеры импорта по ссылке, по умолчанию работают посредством ретрансляции. Если гарантировано известно, что прямые ссылки на видео файлы не привязываются к ip адресу и работают везде, то вы можете поставить чекбокс "Поддерживается прямое воспроизведение", в результате чего файлы будут скачиваться напрямую с сайта-донора, минуя ваш сервер.

Чекбокс "Это провайдер 18+" просто удобно подсвечивает указанного провайдера в общем списке и ни на что не влияет.

В поле версия стоит указывать версию провайдера по принципу число-точка-число, например, 1.0. Если вы правите регулярные выражения по прошествии времени, то рекомендуем увеличивать вторую цифру на единицу, например, изменили что-то - изменили и версию на 1.1, потом еще поменяли - 1.2, и так далее.

В видеообзоре ниже, начиная с 2:28 показывается как раз добавление нового провайдера.