diff options
Diffstat (limited to 'import/src/main.rs')
-rw-r--r-- | import/src/main.rs | 89 |
1 files changed, 53 insertions, 36 deletions
diff --git a/import/src/main.rs b/import/src/main.rs index 645bca0..806ebfb 100644 --- a/import/src/main.rs +++ b/import/src/main.rs @@ -39,6 +39,8 @@ enum Action { copy: bool, #[arg(long)] r#move: bool, + #[arg(long)] + video: bool, #[arg(short, long)] input: Option<PathBuf>, #[arg(short, long)] @@ -61,6 +63,7 @@ fn main() -> anyhow::Result<()> { input, series, copy, + video, r#move, } => { let tmdb_kind = if series { "tv" } else { "movie" }; @@ -128,7 +131,11 @@ fn main() -> anyhow::Result<()> { import_seek_index(&mut input)? }; - kind = NodeKind::Movie; + kind = if video { + NodeKind::Video + } else { + NodeKind::Movie + }; } let title = file_meta @@ -143,37 +150,42 @@ fn main() -> anyhow::Result<()> { let ident = make_ident(&title); let path = path.join(&ident); - let poster = tmdb_details - .as_ref() - .map(|d| { - d.poster_path - .as_ref() - .map(|p| { - let pu = path.join("poster.jpeg"); - let mut f = File::create(&pu)?; - tmdb_image(&p, &mut f)?; - Ok::<_, anyhow::Error>(pu) - }) - .transpose() - }) - .transpose()? - .flatten(); + let (mut poster, mut backdrop) = (None, None); + if !args.dry { + std::fs::create_dir_all(&path)?; - let backdrop = tmdb_details - .as_ref() - .map(|d| { - d.backdrop_path - .as_ref() - .map(|p| { - let pu = path.join("backdrop.jpeg"); - let mut f = File::create(&pu)?; - tmdb_image(&p, &mut f)?; - Ok::<_, anyhow::Error>(pu) - }) - .transpose() - }) - .transpose()? - .flatten(); + poster = tmdb_details + .as_ref() + .map(|d| { + d.poster_path + .as_ref() + .map(|p| { + let pu = path.join("poster.jpeg"); + let mut f = File::create(&pu)?; + tmdb_image(&p, &mut f)?; + Ok::<_, anyhow::Error>(pu) + }) + .transpose() + }) + .transpose()? + .flatten(); + + backdrop = tmdb_details + .as_ref() + .map(|d| { + d.backdrop_path + .as_ref() + .map(|p| { + let pu = path.join("backdrop.jpeg"); + let mut f = File::create(&pu)?; + tmdb_image(&p, &mut f)?; + Ok::<_, anyhow::Error>(pu) + }) + .transpose() + }) + .transpose()? + .flatten(); + } let node = Node { private: NodePrivate { @@ -187,11 +199,17 @@ fn main() -> anyhow::Result<()> { public: NodePublic { parent: None, federated: None, - description: tmdb_details.as_ref().map(|d| d.overview.to_owned()), - tagline: tmdb_details + description: file_meta .as_ref() - .map(|d| d.tagline.to_owned()) - .flatten(), + .map(|m| m.description.clone()) + .flatten() + .or(tmdb_details.as_ref().map(|d| d.overview.to_owned())), + tagline: file_meta.as_ref().map(|m| m.tagline.clone()).flatten().or( + tmdb_details + .as_ref() + .map(|d| d.tagline.to_owned()) + .flatten(), + ), title, index: None, kind, @@ -206,7 +224,6 @@ fn main() -> anyhow::Result<()> { if args.dry { println!("{}", serde_json::to_string_pretty(&node)?) } else { - std::fs::create_dir_all(&path)?; if let Some(source_path) = source_path_e { let input = input.clone().unwrap(); if r#move { |