Parse music metadata
This commit is contained in:
+18
-1
@@ -8,10 +8,12 @@ use std::{
|
||||
time::{Duration, SystemTime},
|
||||
};
|
||||
|
||||
use clap::builder::OsStr;
|
||||
use fuser::{Errno, FileAttr, Filesystem, Generation, INodeNo, Request};
|
||||
use notify::{Event, EventKind, RecursiveMode, Watcher};
|
||||
|
||||
use crate::file_watcher::FileWatcher;
|
||||
use crate::music_metadata::MusicMetadata;
|
||||
|
||||
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
|
||||
enum FileType {
|
||||
@@ -27,6 +29,7 @@ struct LocalItem {
|
||||
local_path: PathBuf,
|
||||
file_type: FileType,
|
||||
metadata: fs::Metadata,
|
||||
music_metadata: Option<MusicMetadata>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
@@ -49,6 +52,7 @@ impl LocalOrigin {
|
||||
local_path: PathBuf::from(&destination),
|
||||
file_type: FileType::Directory,
|
||||
metadata: fs::metadata(&source).unwrap(),
|
||||
music_metadata: Option::None,
|
||||
};
|
||||
map.lock().unwrap().insert(INodeNo::ROOT, local_root);
|
||||
|
||||
@@ -79,6 +83,7 @@ impl LocalOrigin {
|
||||
local_path: destination.to_path_buf(),
|
||||
file_type: FileType::Directory,
|
||||
metadata: fs::metadata(&source).unwrap(),
|
||||
music_metadata: Option::None,
|
||||
};
|
||||
map.lock().unwrap().insert(INodeNo::ROOT, local_root);
|
||||
|
||||
@@ -109,13 +114,25 @@ impl LocalOrigin {
|
||||
// local_path.push(destination);
|
||||
local_path.push(name.clone());
|
||||
|
||||
let music_metadata: Option<MusicMetadata> = if item_path
|
||||
.extension()
|
||||
.and_then(std::ffi::OsStr::to_str)
|
||||
.unwrap()
|
||||
== "flac"
|
||||
{
|
||||
MusicMetadata::parse_music_metadata(&item_path)
|
||||
} else {
|
||||
Option::None
|
||||
};
|
||||
|
||||
let local_item = LocalItem {
|
||||
inode: INodeNo(metadata.ino()),
|
||||
name: name,
|
||||
original_path: item_path.clone(),
|
||||
local_path: local_path,
|
||||
file_type: file_type,
|
||||
metadata,
|
||||
metadata: metadata,
|
||||
music_metadata: music_metadata,
|
||||
};
|
||||
let inode = local_item.inode;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user