lib/feedjira/parser/itunes_rss_item.rb
# frozen_string_literal: true
module Feedjira
module Parser
# iTunes extensions to the standard RSS2.0 item
# Source: http://www.apple.com/itunes/whatson/podcasts/specs.html
class ITunesRSSItem
include SAXMachine
include FeedEntryUtilities
include RSSEntryUtilities
sax_config.top_level_elements["enclosure"].clear
# If author is not present use author tag on the item
element :"itunes:author", as: :itunes_author
element :"itunes:block", as: :itunes_block
element :"itunes:duration", as: :itunes_duration
element :"itunes:explicit", as: :itunes_explicit
element :"itunes:keywords", as: :itunes_keywords
element :"itunes:subtitle", as: :itunes_subtitle
element :"itunes:image", value: :href, as: :itunes_image
element :"itunes:isClosedCaptioned", as: :itunes_closed_captioned
element :"itunes:order", as: :itunes_order
element :"itunes:season", as: :itunes_season
element :"itunes:episode", as: :itunes_episode
element :"itunes:title", as: :itunes_title
element :"itunes:episodeType", as: :itunes_episode_type
# If summary is not present, use the description tag
element :"itunes:summary", as: :itunes_summary
element :enclosure, value: :length, as: :enclosure_length
element :enclosure, value: :type, as: :enclosure_type
element :enclosure, value: :url, as: :enclosure_url
elements "psc:chapter", as: :raw_chapters, class: Feedjira::Parser::PodloveChapter
# Podlove requires clients to re-order by start time in the
# event the publisher doesn't provide them in that
# order. SAXMachine doesn't have any sort capability afaik, so
# we have to sort chapters manually.
def chapters
raw_chapters.sort_by(&:start)
end
end
end
end