RSS Polling: ler a descrição do vídeo dos feeds de canais do YouTube

Importamos vários canais do YouTube para uma categoria do fórum usando RSS Polling. Cada tópico recebe a URL do vídeo, que é exibida em formato onebox no player, mas a descrição do vídeo nunca aparece na postagem. Para muitos vídeos, a descrição é o conteúdo principal — rota, localização, equipamentos, links — e os membros pedem por ela.

Os feeds de canais do YouTube usam Atom com extensões de Media RSS, e cada entrada contém a descrição completa em <media:group><media:description>, além de <media:thumbnail>. O RSS Polling analisa feeds com a gem rss (0.3.3, Gemfile.lock#L614), que não possui um módulo de Media RSS, de modo que esses elementos são descartados antes que o FeedItem os processe, e os itens do YouTube recorrem à URL simples (feed_item.rb#L17-L23).

O que ajudaria:

  1. Ler media:description (e media:thumbnail) para entradas do YouTube.
  2. Uma opção por feed ou global para incluir a descrição abaixo do vídeo na postagem importada.

Atualmente, fazemos isso com um pequeno plugin complementar, relendo o XML do feed durante a consulta (discourse-rss-onebox). Funciona nos tópicos do nosso fórum, mas depende de detalhes internos do RSS Polling e seria mais simples e robusto se fosse implementado no núcleo.

3 curtidas

o gem rss suporta as extensões de media rss? se sim, ficarei feliz em revisar e mesclar um pull request que atualize o gem rss e adicione suporte a essas extensões de mídia :+1:

3 curtidas

Verificado: não. Nem a versão do Discourse (0.3.3) nem a branch master atual do ruby/rss (0.3.4) possuem um módulo de Media RSS — ele inclui content, Dublin Core, image, iTunes, slash, syndication, taxonomy e trackback, e ignora elementos media:*. Portanto, apenas atualizar a gem não resolverá.

Duas possibilidades que vejo:

  1. Adicionar um módulo de Media RSS ao ruby/rss upstream (seguindo o modelo do módulo de iTunes) e, em seguida, atualizar a gem aqui.
  2. Ler media:description do XML bruto com Nokogiri dentro do RSS Polling — a etapa de busca já possui o XML antes da análise, então nenhuma alteração na gem é necessária. É o que nosso plugin companheiro faz hoje, e tem sido confiável com canais do YouTube.

A opção 2 parece ser a mudança menor. Aceitariam um PR nessa linha?

3 curtidas