musicutil/src/types.rs
ChaotiCryptidz bcaa3b8a44
clippy run
2022-10-22 14:16:02 +01:00

65 lines
1.7 KiB
Rust

use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Tags {
pub title: String,
pub artist: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct File {
pub filename: String,
pub extension: String,
pub path_to: PathBuf,
pub path_from_source: PathBuf,
pub tags: Tags,
}
impl File {
pub fn from_path(source_dir: String, full_path: PathBuf) -> File {
let full_file_path = PathBuf::from(&source_dir).join(full_path);
let filename = full_file_path
.file_stem()
.unwrap()
.to_str()
.unwrap()
.to_string();
let extension = full_file_path
.extension()
.unwrap()
.to_str()
.unwrap()
.to_string();
let path_from_src = full_file_path.strip_prefix(&source_dir).unwrap();
let mut folder_path_from_src = path_from_src.to_path_buf();
folder_path_from_src.pop();
let path_to = PathBuf::from(&source_dir).join(&folder_path_from_src);
File {
filename,
extension,
path_from_source: folder_path_from_src,
path_to,
tags: Tags {
title: "".to_string(),
artist: "".to_string(),
},
}
}
pub fn join_filename(&self) -> String {
format!("{}.{}", self.filename, self.extension)
}
pub fn join_path_to(&self) -> PathBuf {
PathBuf::from(&self.path_to).join(self.join_filename())
}
pub fn join_path_from_source(&self) -> PathBuf {
PathBuf::from(&self.path_from_source).join(self.join_filename())
}
}