use std::time::Duration;
use jiff::Timestamp;
use rama_net::uri::Uri;
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastTranscript {
pub url: String,
pub type_: String,
pub language: Option<String>,
pub rel: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastAlternateEnclosure {
pub type_: String,
pub length: Option<u64>,
pub bitrate: Option<f64>,
pub height: Option<u64>,
pub lang: Option<String>,
pub title: Option<String>,
pub rel: Option<String>,
pub codecs: Option<String>,
pub default: bool,
pub sources: Vec<PodcastSource>,
pub integrity: Option<PodcastIntegrity>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastSource {
pub uri: Uri,
pub content_type: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastIntegrity {
pub type_: String,
pub value: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastChapters {
pub url: String,
pub type_: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastSoundbite {
pub start_time: Duration,
pub duration: Duration,
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastPerson {
pub name: String,
pub role: Option<String>,
pub group: Option<String>,
pub img: Option<String>,
pub href: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastLocation {
pub name: String,
pub geo: Option<String>,
pub osm: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastSeason {
pub number: u64,
pub name: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastEpisode {
pub number: f64,
pub display: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastFunding {
pub url: String,
pub title: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastTrailer {
pub title: String,
pub url: String,
pub pub_date: Option<Timestamp>,
pub length: Option<u64>,
pub type_: Option<String>,
pub season: Option<u64>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct PodcastRemoteItem {
pub feed_guid: String,
pub item_guid: Option<String>,
pub feed_url: Option<String>,
pub title: Option<String>,
pub medium: Option<String>,
}
#[derive(Debug, Clone, Default, PartialEq)]
pub struct Podcast {
pub transcripts: Vec<PodcastTranscript>,
pub alternate_enclosures: Vec<PodcastAlternateEnclosure>,
pub chapters: Option<PodcastChapters>,
pub soundbites: Vec<PodcastSoundbite>,
pub persons: Vec<PodcastPerson>,
pub location: Option<PodcastLocation>,
pub season: Option<PodcastSeason>,
pub episode: Option<PodcastEpisode>,
pub remote_items: Vec<PodcastRemoteItem>,
}
#[derive(Debug, Clone, Default, PartialEq)]
pub struct PodcastFeed {
pub guid: Option<String>,
pub locked: Option<bool>,
pub locked_owner: Option<String>,
pub fundings: Vec<PodcastFunding>,
pub persons: Vec<PodcastPerson>,
pub location: Option<PodcastLocation>,
pub trailers: Vec<PodcastTrailer>,
pub license: Option<String>,
pub medium: Option<String>,
pub remote_items: Vec<PodcastRemoteItem>,
}