From df4aeb5b65c39692483bda586253abb1719d5e14 Mon Sep 17 00:00:00 2001 From: KeksNino Date: Mon, 31 Aug 2026 21:35:21 +0200 Subject: [PATCH] feat: rename files based on tags --- src/main.rs | 2 +- src/move_files.rs | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5d08310..95a45a4 100755 --- a/src/main.rs +++ b/src/main.rs @@ -70,7 +70,7 @@ fn main() -> Result<(), Box> { Commands::Edit { file } => { let path = PathBuf::from("/tmp/keks-sort-metadata"); let tag = get_metadata(file); - edit(path, tag); + let _ = edit(path, tag); } } diff --git a/src/move_files.rs b/src/move_files.rs index 1c4586b..9d7ff7e 100644 --- a/src/move_files.rs +++ b/src/move_files.rs @@ -16,6 +16,7 @@ pub fn move_files( let artist = tag.artist(); let album = tag.album(); let title = tag.title(); + let track_number = tag.get_string(ItemKey::TrackNumber); let album_artist_path = tag.get_string(ItemKey::AlbumArtist).unwrap_or("None"); let artist_dir = if !album_artist_path.is_empty() { @@ -24,7 +25,7 @@ pub fn move_files( artist.as_deref() }; - let album_dir = album.or(title); + let album_dir = album.or(title.clone()); let (Some(artist_dir), Some(album_dir)) = (artist_dir, album_dir) else { return Ok(()); @@ -34,10 +35,17 @@ pub fn move_files( let _ = create_dir_all(dir_to_create); let target = target_dir.join(artist_dir).join(album_dir.as_ref()); + let file_name = PathBuf::from(format!( + "0{}. {} - {}.flac", + track_number.unwrap(), + artist.unwrap(), + title.unwrap(), + )); + if should_copy { - copy(&file_path, target.join(file_path.file_name().unwrap()))?; + copy(&file_path, target.join(file_name))?; } else { - rename(&file_path, target.join(file_path.file_name().unwrap()))?; + rename(&file_path, target.join(file_name))?; } for ext in &extra_files {