RSS Polling : lire la description des vidéos depuis les flux de chaînes YouTube

Nous importons plusieurs chaînes YouTube dans une catégorie de forum via le « RSS Polling ». Chaque sujet reçoit l’URL de la vidéo, qui est intégrée dans le lecteur via un onebox, mais la description de la vidéo ne figure jamais dans le message. Pour de nombreuses vidéos, la description constitue le contenu principal — itinéraire, lieu, équipement, liens — et les membres en font la demande.

Les flux de chaînes YouTube sont au format Atom avec des extensions Media RSS, et chaque entrée contient la description complète dans <media:group><media:description>, ainsi que <media:thumbnail>. Le « RSS Polling » analyse les flux à l’aide de la gemme rss (0.3.3, Gemfile.lock#L614), qui ne dispose d’aucun module Media RSS. Par conséquent, ces éléments sont supprimés avant que FeedItem ne les prenne en compte, et les éléments YouTube se replient sur l’URL brute (feed_item.rb#L17-L23).

Ce qui serait utile :

  1. Lire media:description (et media:thumbnail) pour les entrées YouTube.
  2. Une option par flux ou au niveau du site pour inclure la description sous la vidéo dans le message importé.

Nous effectuons actuellement cette opération via un petit plugin compagnon en relisant le XML du flux lors de la récupération (discourse-rss-onebox). Cela fonctionne sur les sujets de notre forum, mais cela dépend des détails internes du « RSS Polling » et serait plus simple et plus robuste s’il était intégré au cœur du système.

la gemme rss prend-elle en charge les extensions media rss ? si c’est le cas, je serais ravi de passer en revue et de fusionner une demande de tirage visant à mettre à jour la gemme rss et d’ajouter la prise en charge de ces extensions media :+1:

Vérifié : non. Ni la version de Discourse (0.3.3) ni la branche master actuelle de ruby/rss (0.3.4) ne disposent d’un module Media RSS — le gem fournit des modules pour le contenu, Dublin Core, image, iTunes, slash, syndication, taxonomy et trackback, et ignore les éléments media:*. La mise à niveau du gem seul ne résoudra donc pas le problème.

Deux solutions me viennent à l’esprit :

  1. Ajouter un module Media RSS à ruby/rss en amont (sur le modèle de son module iTunes), puis mettre à jour le gem ici.
  2. Lire media:description depuis le XML brut avec Nokogiri au sein du RSS Polling — l’étape de récupération dispose déjà du XML avant l’analyse, donc aucun changement de gem n’est nécessaire. C’est ce que fait notre plugin compagnon actuellement, et cela s’est avéré fiable avec les chaînes YouTube.

L’option 2 semble être le changement le plus minimal. Accepteriez-vous une PR dans cette direction ?