Опрос RSS: чтение описания видео из каналов YouTube

Мы импортируем несколько каналов YouTube в категорию форума с помощью RSS Polling. Каждая тема получает URL видео, которое превращается в однобокс с плеером, но описание видео так и не попадает в пост. Для многих видео описание является основным контентом — маршрут, местоположение, снаряжение, ссылки — и участники форума просят его добавить.

Фиды каналов YouTube используют формат Atom с расширениями Media RSS, и каждый элемент содержит полное описание в <media:group><media:description>, а также <media:thumbnail>. RSS Polling парсит фиды с помощью гема rss (0.3.3, Gemfile.lock#L614), в котором отсутствует модуль Media RSS, поэтому эти элементы отбрасываются до того, как их увидит FeedItem, и элементы YouTube откатываются к простому URL (feed_item.rb#L17-L23).

Что было бы полезно:

  1. Чтение media:description (и media:thumbnail) для элементов YouTube.
  2. Опция на уровне фидов или всего сайта для включения описания под видео в импортированном посте.

Сейчас мы делаем это с помощью небольшого вспомогательного плагина, который повторно читает XML фидов во время опроса (discourse-rss-onebox). Это работает в темах нашего форума, но зависит от внутренних механизмов RSS Polling, и было бы проще и надёжнее реализовать это в ядре.

1 лайк

Поддерживает ли гем rss расширения media RSS? Если да, я с удовольствием просмотрю и объединю pull request, который обновляет гем rss и добавляет поддержку этих медиа-расширений :+1:

1 лайк

Проверено: нет. Ни в версии, которую использует Discourse (0.3.3), ни в текущей ветке master ruby/rss (0.3.4) нет модуля Media RSS — он предоставляет модули content, Dublin Core, image, iTunes, slash, syndication, taxonomy и trackback, игнорируя элементы media:*. Поэтому простое обновление гема не поможет.

Вижу два варианта:

  1. Добавить модуль Media RSS в ruby/rss (по образцу модуля iTunes), а затем обновить версию гема здесь.
  2. Читать media:description из исходного XML с помощью Nokogiri внутри RSS Polling — на этапе получения данных XML уже доступен до парсинга, поэтому менять гем не нужно. Именно так сейчас работает наш сопутствующий плагин, и он стабильно функционирует с каналами YouTube.

Вариант 2 кажется менее масштабным изменением. Вы готовы принять PR в этом направлении?

1 лайк