RSS 폴링: YouTube 채널 피드에서 동영상 설명 읽기

여러 개의 YouTube 채널을 RSS 폴링을 통해 포럼 카테고리로 가져오고 있습니다. 각 주제에는 비디오 URL이 포함되며 이는 플레이어에서 원박스(onebox)로 렌더링되지만, 비디오 설명은 게시글에 전혀 반영되지 않습니다. 많은 비디오의 경우 설명이 실제 콘텐츠(루트, 위치, 장비, 링크 등)를 담고 있어 회원들이 이를 요청하고 있습니다.

YouTube 채널 피드는 Media RSS 확장 기능이 포함된 Atom 형식이며, 각 항목에는 <media:group><media:description>에 전체 설명과 <media:thumbnail>이 함께 포함됩니다. RSS Poll링은 rss 지엄(0.3.3, Gemfile.lock#L614)을 사용하여 피드를 파싱하는데, 이 지엄에는 Media RSS 모듈이 없어 이러한 요소들이 FeedItem이 확인하기 전에 제거됩니다. 결과적으로 YouTube 항목은 단순 URL로만 폴백 처리됩니다 (feed_item.rb#L17-L23).

다음과 같은 개선이 필요합니다:

  1. YouTube 항목에 대해 media:description(및 media:thumbnail)을 읽는 기능.
  2. 가져온 게시글에서 비디오 아래에 설명을 포함할 수 있는 피드별 또는 사이트 전체 옵션.

현재 우리는 폴링 중 피드 XML을 다시 읽는 작은 동반 플러그인(discourse-rss-onebox)을 통해 이를 구현하고 있습니다. 이는 우리 포럼의 주제 전반에서 작동하지만, RSS Poll링 내부 구현에 의존하고 있어 코어에 직접 통합되는 것이 더 간단하고 견고할 것입니다.

2개의 좋아요

rss 지엄이 미디어 RSS 확장 기능을 지원하는지 궁금합니다. 지원한다면 rss 지엄을 업그레이드하고 해당 미디어 확장 기능에 대한 지원을 추가하는 풀 리퀘스트를 검토하고 병합해 주시면 좋겠습니다 :+1:

2개의 좋아요

확인 결과: 아니요. Discourse가 번들하는 버전(0.3.3)도, ruby/rss의 현재 master(0.3.4)도 Media RSS 모듈을 제공하지 않습니다. 이 라이브러리는 content, Dublin Core, image, iTunes, slash, syndication, taxonomy, trackback만 지원하며 media:* 요소는 무시합니다. 따라서 해당 gem만 업그레이드해서는 해결되지 않습니다.

제가 볼 때 두 가지 방법이 있습니다.

  1. ruby/rss 업스트림에 Media RSS 모듈을 추가(기존 iTunes 모듈과 유사한 방식)한 후, 여기서 gem 버전을 올립니다.
  2. RSS Polling 내부에서 Nokogiri를 사용해 원시 XML에서 media:description을 읽습니다. 가져오기 단계에서 파싱 전에 이미 XML을 보유하고 있으므로 gem 변경이 필요하지 않습니다. 현재 저희 동반 플러그인이 이렇게 작동하고 있으며, YouTube 채널에서 안정적으로 확인되었습니다.

옵션 2가 변경 범위가 더 작아 보입니다. 이 방향으로 PR을 받아주실 수 있을까요?

2개의 좋아요