From 30b9edc05bbf9347f002cc0ea8606ff381e1c962 Mon Sep 17 00:00:00 2001 From: onli Date: Wed, 3 Jul 2024 00:33:24 +0200 Subject: [PATCH] Fix: media element w/o duration would overwrite enclosure's length --- feedparser/lib/feedparser/builder/rss.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/feedparser/lib/feedparser/builder/rss.rb b/feedparser/lib/feedparser/builder/rss.rb index 66773b7..50b1834 100644 --- a/feedparser/lib/feedparser/builder/rss.rb +++ b/feedparser/lib/feedparser/builder/rss.rb @@ -240,7 +240,9 @@ def add_meta_items( feed_item, xml_item ) contentElement = xml_item.at_xpath('media:content') || xml_item.at_xpath('media:group/media:content') if contentElement feed_item.attachments.first.url = contentElement.get('url') - feed_item.attachments.first.length = contentElement.get('duration') + # The media:content element sometimes have no duration set, but enclosures do and would be + # parsed first. We need to avoid overwriting a set length with nil + feed_item.attachments.first.length = contentElement.get('duration') if contentElement.get('duration') end thumbnailElement = xml_item.at_xpath('media:thumbnail') || xml_item.at_xpath('media:content/media:thumbnail') || xml_item.at_xpath('media:group/media:thumbnail')