diff options
Diffstat (limited to 'src/actions.rs')
| -rw-r--r-- | src/actions.rs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/actions.rs b/src/actions.rs index 5c67c40..553ac37 100644 --- a/src/actions.rs +++ b/src/actions.rs @@ -9,20 +9,22 @@ use std::process::Command; use structs::*; use utils::*; -pub fn list_episodes(state: &State, search: &str) { +pub fn list_episodes(search: &str) { let re = Regex::new(search).unwrap(); - for podcast in &state.subs { - if re.is_match(&podcast.title) { - println!("Episodes for {}:", &podcast.title); - match Podcast::from_url(&podcast.url) { - Ok(podcast) => { - let episodes = podcast.episodes(); - for (index, episode) in episodes.iter().enumerate() { - println!("({}) {}", episodes.len() - index, episode.title().unwrap()); - } - } - Err(err) => println!("{}", err), + let mut path = get_podcast_dir(); + path.push(".rss"); + DirBuilder::new().recursive(true).create(&path).unwrap(); + for entry in fs::read_dir(&path).unwrap() { + let entry = entry.unwrap(); + if re.is_match(&entry.file_name().into_string().unwrap()) { + let file = File::open(&entry.path()).unwrap(); + let channel = Channel::read_from(BufReader::new(file)).unwrap(); + let podcast = Podcast::from(channel); + let episodes = podcast.episodes(); + for (num, ep) in episodes.iter().enumerate() { + println!("({}) {}", episodes.len()-num, ep.title().unwrap()); } + return; } } } |
