diff options
Diffstat (limited to 'import/src')
| -rw-r--r-- | import/src/lib.rs | 20 | ||||
| -rw-r--r-- | import/src/plugins/misc.rs | 6 | ||||
| -rw-r--r-- | import/src/plugins/mod.rs | 1 |
3 files changed, 20 insertions, 7 deletions
diff --git a/import/src/lib.rs b/import/src/lib.rs index 763af42..0f61c48 100644 --- a/import/src/lib.rs +++ b/import/src/lib.rs @@ -112,12 +112,14 @@ fn import(db: &Database, incremental: bool) -> Result<()> { let rt = Handle::current(); files.into_par_iter().for_each(|(path, parent, iflags)| { + reporting::set_task(format!("unknown: {path:?}")); import_file(db, &rt, &plugins, &path, parent, iflags); IMPORT_PROGRESS .blocking_write() .as_mut() .unwrap() .finished_items += 1; + reporting::set_task("idle".to_owned()); }); Ok(()) @@ -234,9 +236,7 @@ fn import_file( } } } - } - - if filename.ends_with("mkv") || filename.ends_with("mka") || filename.ends_with("mks") { + } else if filename.ends_with("mkv") || filename.ends_with("mka") || filename.ends_with("mks") { let slug = get_node_slug(path).unwrap(); let node = NodeID::from_slug(&slug); @@ -250,6 +250,7 @@ fn import_file( })) .is_some(); + reporting::set_task(format!("demuxer meta: {path:?}")); let Some(seg) = reporting::catch(read_media_metadata(path).context(anyhow!("media {path:?}"))) else { @@ -266,7 +267,18 @@ fn import_file( .is_some(); } } - reporting::set_task("idle".to_owned()); + } else { + for p in plugins { + let inf = p.info(); + if inf.handle_file { + reporting::set_task(format!("{}(file): {path:?}", inf.name)); + all_ok &= reporting::catch( + p.file(&ImportContext { db, rt, iflags }, parent, path) + .context(anyhow!("{}(file) {path:?}", inf.name)), + ) + .is_some(); + } + } } if all_ok { diff --git a/import/src/plugins/misc.rs b/import/src/plugins/misc.rs index 8d7028c..b879586 100644 --- a/import/src/plugins/misc.rs +++ b/import/src/plugins/misc.rs @@ -33,9 +33,9 @@ impl ImportPlugin for ImageFiles { "backdrop.jpeg" | "backdrop.webp" | "backdrop.png" => PictureSlot::Backdrop, _ => return Ok(()), }; - info!("import {slot:?} at {path:?}"); + info!("import {slot} at {path:?}"); let asset = Asset(cache_store( - format!("media/literal/{}-poster.image", HashKey(path)), + format!("media/literal/{}-{slot}.image", HashKey(path)), || { let mut data = Vec::new(); File::open(path)?.read_to_end(&mut data)?; @@ -43,7 +43,7 @@ impl ImportPlugin for ImageFiles { }, )?); ct.db.update_node_init(parent, |node| { - node.pictures.insert(PictureSlot::Cover, asset); + node.pictures.insert(slot, asset); Ok(()) })?; Ok(()) diff --git a/import/src/plugins/mod.rs b/import/src/plugins/mod.rs index cf0da1c..d4e49b5 100644 --- a/import/src/plugins/mod.rs +++ b/import/src/plugins/mod.rs @@ -67,6 +67,7 @@ pub fn init_plugins(secrets: &ApiSecrets) -> Vec<Box<dyn ImportPlugin>> { plugins.push(Box::new(misc::ImageFiles)); plugins.push(Box::new(tags::Tags)); plugins.push(Box::new(media_info::MediaInfo)); + plugins.push(Box::new(infojson::Infojson)); if let Some(s) = &secrets.trakt { plugins.push(Box::new(trakt::Trakt::new(&s))); |