aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNathan2017-07-23 12:46:34 -0400
committerNathan2017-07-23 12:46:34 -0400
commit237a0be7f0ca4d7dceca1c9e43391381593064fb (patch)
treedd4b55cc004c5ea28d1c7d4b6687de7376470ca6 /src
parentd1c2572a0cb2882b2661dafac0631e5888144dce (diff)
downloadpodcast-237a0be7f0ca4d7dceca1c9e43391381593064fb.tar.bz2
Cleanup and error handling
Diffstat (limited to 'src')
-rw-r--r--src/actions.rs9
-rw-r--r--src/utils.rs16
2 files changed, 13 insertions, 12 deletions
diff --git a/src/actions.rs b/src/actions.rs
index 2f90205..120d58b 100644
--- a/src/actions.rs
+++ b/src/actions.rs
@@ -72,8 +72,11 @@ pub fn download_range(state: &State, p_search: &str, e_search: &str) {
for subscription in state.subscriptions() {
if re_pod.is_match(&subscription.title()) {
let podcast = Podcast::from_url(&subscription.url()).unwrap();
- let episodes_to_download = parse_download_episodes(e_search);
- podcast.download_specific(episodes_to_download);
+ match parse_download_episodes(e_search) {
+ Ok(episodes_to_download) => podcast.download_specific(episodes_to_download),
+ Err(err) => eprintln!("{}", err),
+ }
+ return;
}
}
}
@@ -87,7 +90,7 @@ pub fn download_episode(state: &State, p_search: &str, e_search: &str) {
let podcast = Podcast::from_url(&subscription.url()).unwrap();
let episodes = podcast.episodes();
if let Err(err) = episodes[episodes.len() - ep_num].download(podcast.title()) {
- println!("{}", err);
+ eprintln!("{}", err);
}
}
}
diff --git a/src/utils.rs b/src/utils.rs
index 5a6342b..a3d7260 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -2,6 +2,7 @@ use std::collections::BTreeSet;
use std::env;
use std::fs;
use std::path::PathBuf;
+use std::num::ParseIntError;
pub fn already_downloaded(dir: &str) -> BTreeSet<String> {
@@ -15,12 +16,9 @@ pub fn already_downloaded(dir: &str) -> BTreeSet<String> {
if let Ok(entry) = entry {
match entry.file_name().into_string() {
Ok(val) => {
- // TODO There has to be a better way to do this...later
- result.insert(String::from(
- val.trim_right_matches(".mp3")
- .trim_right_matches(".m4a")
- .trim_right_matches(".ogg"),
- ));
+ let name = String::from(val);
+ let index = name.find('.').unwrap();
+ result.insert(String::from(&name[0..index]));
}
Err(_) => {
println!(
@@ -62,7 +60,7 @@ pub fn get_sub_file() -> PathBuf {
}
}
-pub fn parse_download_episodes(e_search: &str) -> Vec<usize> {
+pub fn parse_download_episodes(e_search: &str) -> Result<Vec<usize>, ParseIntError> {
let input = String::from(e_search);
let mut ranges = Vec::<(usize, usize)>::new();
let mut elements = Vec::<usize>::new();
@@ -75,7 +73,7 @@ pub fn parse_download_episodes(e_search: &str) -> Vec<usize> {
.collect();
ranges.push((range[0], range[1]));
} else {
- elements.push(elem.parse::<usize>().unwrap());
+ elements.push(elem.parse::<usize>()?);
}
}
@@ -86,5 +84,5 @@ pub fn parse_download_episodes(e_search: &str) -> Vec<usize> {
}
}
elements.dedup();
- elements
+ Ok(elements)
}