aboutsummaryrefslogtreecommitdiff
path: root/server/src/library.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/library.rs')
-rw-r--r--server/src/library.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/server/src/library.rs b/server/src/library.rs
index 0c42a73..f33508f 100644
--- a/server/src/library.rs
+++ b/server/src/library.rs
@@ -1,5 +1,5 @@
-use crate::metadata::{DirectoryInfo, ItemInfo};
use anyhow::{anyhow, bail, Context, Ok};
+use jellycommon::{DirectoryInfo, ItemInfo};
use std::{ffi::OsStr, fs::File, path::PathBuf, sync::Arc};
pub struct Library {
@@ -84,8 +84,16 @@ impl Node {
let children = path
.read_dir()?
- .map(|e| e.unwrap().path())
- .filter(|e| e.extension() != Some(OsStr::new("json")))
+ .filter_map(|e| {
+ let e = e.unwrap();
+ if e.path().extension() == Some(OsStr::new("metadata.json"))
+ || e.metadata().unwrap().is_dir()
+ {
+ Some(e.path())
+ } else {
+ None
+ }
+ })
.map(|e| {
Node::from_path(e.clone(), lib_path.clone(), false)
.context(format!("loading {e:?}"))
@@ -101,9 +109,7 @@ impl Node {
}))
.into())
} else if path.is_file() {
- let mpath = path.clone().with_extension("metadata.json");
- let datafile = File::open(mpath.clone())
- .context(format!("metadata missing, tried path {mpath:?}"))?;
+ let datafile = File::open(path.clone()).context("cant load metadata")?;
let data: ItemInfo = serde_json::from_reader(datafile).context("invalid metadata")?;
let identifier = path
.with_extension("")