Parser: pass an rss::ItunesExtension to instead of an rss::Item.
This commit is contained in:
parent
5da002fe6d
commit
d6817aaa1f
@ -206,7 +206,7 @@ impl NewEpisodeMinimal {
|
|||||||
// Case: Thu, 05 Aug 2016 06:00:00 -0400 <-- Actually that was friday.
|
// Case: Thu, 05 Aug 2016 06:00:00 -0400 <-- Actually that was friday.
|
||||||
let epoch = date.map(|x| x.timestamp() as i32).unwrap_or(0);
|
let epoch = date.map(|x| x.timestamp() as i32).unwrap_or(0);
|
||||||
|
|
||||||
let duration = parser::parse_itunes_duration(item);
|
let duration = parser::parse_itunes_duration(item.itunes_ext());
|
||||||
|
|
||||||
NewEpisodeMinimalBuilder::default()
|
NewEpisodeMinimalBuilder::default()
|
||||||
.title(title)
|
.title(title)
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
use rss::Item;
|
use rss::extension::itunes::ITunesItemExtension;
|
||||||
|
|
||||||
/// Parses an Item Itunes extension and returns it's duration value in seconds.
|
/// Parses an Item Itunes extension and returns it's duration value in seconds.
|
||||||
// FIXME: Rafactor
|
// FIXME: Rafactor
|
||||||
#[allow(non_snake_case)]
|
#[allow(non_snake_case)]
|
||||||
pub(crate) fn parse_itunes_duration(item: &Item) -> Option<i32> {
|
pub(crate) fn parse_itunes_duration(item: Option<&ITunesItemExtension>) -> Option<i32> {
|
||||||
let duration = item.itunes_ext().map(|s| s.duration())??;
|
let duration = item.map(|s| s.duration())??;
|
||||||
|
|
||||||
// FOR SOME FUCKING REASON, IN THE APPLE EXTENSION SPEC
|
// FOR SOME FUCKING REASON, IN THE APPLE EXTENSION SPEC
|
||||||
// THE DURATION CAN BE EITHER AN INT OF SECONDS OR
|
// THE DURATION CAN BE EITHER AN INT OF SECONDS OR
|
||||||
@ -31,7 +31,6 @@ pub(crate) fn parse_itunes_duration(item: &Item) -> Option<i32> {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use rss::ItemBuilder;
|
|
||||||
use rss::extension::itunes::ITunesItemExtensionBuilder;
|
use rss::extension::itunes::ITunesItemExtensionBuilder;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -43,55 +42,40 @@ mod tests {
|
|||||||
.duration(Some("3370".into()))
|
.duration(Some("3370".into()))
|
||||||
.build()
|
.build()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let item = ItemBuilder::default()
|
let item = Some(&extension);
|
||||||
.itunes_ext(Some(extension))
|
assert_eq!(parse_itunes_duration(item), Some(3370));
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(parse_itunes_duration(&item), Some(3370));
|
|
||||||
|
|
||||||
// Input is a String<M:SS>
|
// Input is a String<M:SS>
|
||||||
let extension = ITunesItemExtensionBuilder::default()
|
let extension = ITunesItemExtensionBuilder::default()
|
||||||
.duration(Some("6:10".into()))
|
.duration(Some("6:10".into()))
|
||||||
.build()
|
.build()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let item = ItemBuilder::default()
|
let item = Some(&extension);
|
||||||
.itunes_ext(Some(extension))
|
assert_eq!(parse_itunes_duration(item), Some(370));
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(parse_itunes_duration(&item), Some(370));
|
|
||||||
|
|
||||||
// Input is a String<MM:SS>
|
// Input is a String<MM:SS>
|
||||||
let extension = ITunesItemExtensionBuilder::default()
|
let extension = ITunesItemExtensionBuilder::default()
|
||||||
.duration(Some("56:10".into()))
|
.duration(Some("56:10".into()))
|
||||||
.build()
|
.build()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let item = ItemBuilder::default()
|
let item = Some(&extension);
|
||||||
.itunes_ext(Some(extension))
|
assert_eq!(parse_itunes_duration(item), Some(3370));
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(parse_itunes_duration(&item), Some(3370));
|
|
||||||
|
|
||||||
// Input is a String<H:MM:SS>
|
// Input is a String<H:MM:SS>
|
||||||
let extension = ITunesItemExtensionBuilder::default()
|
let extension = ITunesItemExtensionBuilder::default()
|
||||||
.duration(Some("1:56:10".into()))
|
.duration(Some("1:56:10".into()))
|
||||||
.build()
|
.build()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let item = ItemBuilder::default()
|
let item = Some(&extension);
|
||||||
.itunes_ext(Some(extension))
|
assert_eq!(parse_itunes_duration(item), Some(6970));
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(parse_itunes_duration(&item), Some(6970));
|
|
||||||
|
|
||||||
// Input is a String<HH:MM:SS>
|
// Input is a String<HH:MM:SS>
|
||||||
let extension = ITunesItemExtensionBuilder::default()
|
let extension = ITunesItemExtensionBuilder::default()
|
||||||
.duration(Some("01:56:10".into()))
|
.duration(Some("01:56:10".into()))
|
||||||
.build()
|
.build()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let item = ItemBuilder::default()
|
let item = Some(&extension);
|
||||||
.itunes_ext(Some(extension))
|
assert_eq!(parse_itunes_duration(item), Some(6970));
|
||||||
.build()
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(parse_itunes_duration(&item), Some(6970));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user