aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Jaremko2018-02-08 00:42:17 -0500
committerNathan Jaremko2018-02-08 00:42:17 -0500
commit36ec8131c0e71bad454aeb5e66c63f04cfb93e2c (patch)
tree30c07bd1e1989ddbe4c404c317516b3de2a26176
parentaf8f2907c99c0a4cf5d26c5da74efb51b576909c (diff)
downloadpodcast-36ec8131c0e71bad454aeb5e66c63f04cfb93e2c.tar.bz2
0.5.0
-rw-r--r--CHANGELOG4
-rw-r--r--Cargo.toml2
-rw-r--r--src/actions.rs1
-rw-r--r--src/main.rs4
-rw-r--r--src/structs.rs35
5 files changed, 33 insertions, 13 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 79176d8..9f925ba 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+0.5.0
+- Fix downloading all episodes of podcast not working if folder didn't exist
+- Confirm before downloading all episodes of a podcast
+
0.4.7
- Add some tests
- Improve handling of file extensions
diff --git a/Cargo.toml b/Cargo.toml
index fbcdd38..6c4a312 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "podcast"
-version = "0.4.7"
+version = "0.5.0"
authors = ["Nathan Jaremko <njaremko@gmail.com>"]
description = "A command line podcast manager"
license = "GPL-3.0"
diff --git a/src/actions.rs b/src/actions.rs
index 93ddf07..3d89002 100644
--- a/src/actions.rs
+++ b/src/actions.rs
@@ -291,7 +291,6 @@ fn launch_vlc(url: &str) {
}
}
-
pub fn remove_podcast(state: &mut State, p_search: &str) {
if p_search == "*" {
match Podcast::delete_all() {
diff --git a/src/main.rs b/src/main.rs
index 61d4258..e7f4e75 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -20,7 +20,7 @@ use structs::*;
use clap::{App, Arg, SubCommand};
-const VERSION: &str = "0.4.7";
+const VERSION: &str = "0.5.0";
fn main() {
if let Err(err) = create_directories() {
@@ -178,4 +178,4 @@ fn main() {
if let Err(err) = state.save() {
eprintln!("{}", err);
}
-} \ No newline at end of file
+}
diff --git a/src/structs.rs b/src/structs.rs
index b6a1d38..b9db14d 100644
--- a/src/structs.rs
+++ b/src/structs.rs
@@ -41,7 +41,6 @@ impl Config {
}
}
-
#[derive(Serialize, Deserialize, Clone)]
pub struct Subscription {
pub title: String,
@@ -216,20 +215,39 @@ impl Podcast {
}
pub fn download(&self) -> Result<(), io::Error> {
+ print!("You are about to download all episodes (y/n): ");
+ io::stdout().flush().ok();
+ let mut input = String::new();
+ if let Ok(_) = io::stdin().read_line(&mut input) {
+ if input.to_lowercase().trim() != "y" {
+ return Ok(());
+ }
+ }
+
let mut path = get_podcast_dir();
path.push(self.title());
- let downloaded = already_downloaded(self.title())?;
-
- self.episodes().par_iter().for_each(|ref i| {
- if let Some(ep_title) = i.title() {
- if !downloaded.contains(ep_title) {
+ match already_downloaded(self.title()) {
+ Ok(downloaded) => {
+ self.episodes().par_iter().for_each(|ref i| {
+ if let Some(ep_title) = i.title() {
+ if !downloaded.contains(ep_title) {
+ if let Err(err) = i.download(self.title()) {
+ println!("{}", err);
+ }
+ }
+ }
+ });
+ }
+ Err(_) => {
+ self.episodes().par_iter().for_each(|ref i| {
if let Err(err) = i.download(self.title()) {
println!("{}", err);
}
- }
+ });
}
- });
+ }
+
Ok(())
}
@@ -277,7 +295,6 @@ impl Episode {
}
}
-
pub fn download(&self, podcast_name: &str) -> Result<(), io::Error> {
let mut path = get_podcast_dir();
path.push(podcast_name);