///|
/// A podcast category from an iTunes-style RSS extension.
pub(all) struct PodcastCategory {
name : String
subcategories : Array[String]
}
///|
/// Podcast-level extension metadata kept separate from the format-neutral Feed.
pub(all) struct PodcastShowMetadata {
author : String?
owner_name : String?
owner_email : String?
subtitle : String?
summary : String?
explicit : Bool?
image_url : String?
categories : Array[PodcastCategory]
podcast_type : String?
complete : Bool?
new_feed_url : String?
}
///|
/// Podcast episode extensions. Duration is also reflected in its enclosure attachment.
pub(all) struct PodcastEpisodeMetadata {
subtitle : String?
summary : String?
image_url : String?
duration_in_seconds : Double?
episode_number : UInt64?
season_number : UInt64?
episode_type : String?
explicit : Bool?
block : Bool?
}
///|
/// RSS content plus podcast-only metadata that has no slot in the common Feed model.
pub(all) struct PodcastFeed {
feed : Feed
show : PodcastShowMetadata
episodes : Array[PodcastEpisodeMetadata]
}