Rutube: интегрируем как oembed provider source в Drupal

Задача — добавить rutube как oembed провайдера в медиа библиотеку, чтобы можно было создать медиа тип Rutube, где будет поле для ввода ссылки. Медиа поля после этого позволят добавлять еще один тип медиа содержимого — Rutube Video.

Будем использовать модуль oembed_providers для настройки rutube провайдера. Плагин уже поддерживает 10/11 Drupal, так что подойдет для новых проектов.

Custom provider Rutube

/admin/config/media/oembed-providers/custom-providers
В настройках кастомных провайдеров, нужно создать описание для oembed сервиса rutube. Почему rutube до сих под нет в списке провайдеров https://oembed.com/providers.json — остаётся загадкой. Возможно, они не соответствуют полной спецификации.

Итак, добавляем:

Provider name: rutube
Provider URL: https://rutube.ru
Далее описываем endpoint:
Schemas: https://rutube.ru/video/*/
Endpoint URL: https://rutube.ru/api/oembed/
Discovery: True
JSON: True

Можно JSON/XML галочки не ставить. Но я проверил, что JSON работает для oembed rutube сервера, поставил там галку.

Еще один нюанс — обратите внимание, что имя провайдера (provider name) написано с маленькой буквы. Там на форме есть примечание — The ‘Provider name’ must match the provider_name value returned by the provider’s endpoint. Это не очень понятно при заполнении, и вообще кажется, что ни на что не должно влиять, т.к. там есть и машинное имя провайдера.

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

Провайдер готов, теперь его нужно оформить как Media Source.

Provider Bucket

/admin/config/media/oembed-providers/buckets
В плагине oembed_providers медиа источники создаются через объявление «провайдерских ведер», что бы это не значило.

В бакете вы создаёте медиа источник, который может представлять сразу нескольких провайдеров. На форме будет показан весь список с oembed.com плюс созданный нами кастомный провайдер rutube. Отмечаем его галочкой.

Ведро я обозвал как — Rutube Provider.

Создаём тип медиа

/admin/structure/media/add
Теперь, когда мы создали медиа источник, основанный на кастомном провайдере rutube, мы можем создать новый медиа тип, который принимает объекты нужного нам типа.

Укажите название медиа типа и выберите медиа источник.

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

В секции field mapping не так много можно сделать как хотелось бы, обычно в выпадающем списке доступно только поле Name, которое сопоставляется с «Resourсe title».

Создание медиа контента

Теперь в медиа вам доступно создание новых элементов типа «Rutube Video Media Type».

Пример создания контента:

Обратите внимание, что URL должна заканчиваться на «/». Указанная нами схема и не позволит иного варианта, но некоторых смущают сообщения об ошибке вроде «The provided URL does not represent a valid oEmbed resource.», которые выводятся, если формат URL не соответствует шаблону.

Oembed подтянет иконку для видео автоматически. Вот так это примерно выглядит в медиа библиотеке:

Теперь можно создавать медиа поля в публикациях и прикреплять видосы с рутуба. Рендер будет зависеть от выбранного формата поля.

Rendered entity — выведет дефолтовый html, который передаётся oembed сервисом. Thumbnail — выведет тизер.

Мало букафф? Читайте есчо !

Чтение данных из oembed провайдера

Март 11, 2025 г.

В Drupal 10/11 поддержка Oembed провайдеров в ядре (модуль media) позволяет легко и непринуждённо читать данные о медиа прямо из провайдера. Ранее я рассказывал как зарегистрировать oembed для rutube, чтобы иметь возможность оперировать видео контентом ...

Читать

Как получить определения из конфигурационных файлов схем Drupal

Апрель 6, 2025 г.

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

Читать

Добавляем в page cache зависимость от значения cookie

Март 4, 2025 г.

Модуль page_cache использует http_middleware, чтобы зацепиться за объект request и произвести кеширование страницы. Работает он для анонимных пользователей. ...

Читать

SpecialCharacters плагин в CKE5. Добавляем символы.

Апрель 11, 2025 г.

В CKEditor 5 есть родной плагин, который отображает список спец. символов для вставки в редактор. Он удобен и прост, проблема лишь в том, что он содержит ...

Читать
 

Комментарии к «Rutube: интегрируем как oembed provider source в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: