Parse music metadata

This commit is contained in:
Alexander
2026-06-25 21:04:47 +02:00
parent b51c680af4
commit 536e117576
6 changed files with 264 additions and 10 deletions
+18 -1
View File
@@ -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;