Skip to content

Commit

Permalink
extract tag writing to function
Browse files Browse the repository at this point in the history
  • Loading branch information
Esgrove committed May 27, 2024
1 parent ae13481 commit 74c4814
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 31 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "track-rename"
version = "1.17.1"
version = "1.18.0"
edition = "2021"
authors = ["Esgrove <[email protected]>"]
description = "CLI tool for formatting and renaming audio tracks"
Expand Down
67 changes: 38 additions & 29 deletions src/track_renamer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use std::time::Instant;

use anyhow::{Context, Result};
use colored::Colorize;
use id3::TagLike;
use id3::{Tag, TagLike};
use itertools::Itertools;
use rayon::prelude::*;
use walkdir::WalkDir;
Expand Down Expand Up @@ -269,34 +269,13 @@ impl TrackRenamer {
println!("{}", fix_tags_header);
track.tags.show_diff();
}
if !self.config.print_only && (self.config.force || utils::confirm()) {
// Remove genre first to try to get rid of old ID3v1 genre IDs
file_tags.remove_genre();
file_tags.remove_disc();
file_tags.remove_total_discs();
file_tags.remove_track();
file_tags.remove_total_tracks();
file_tags.remove_all_lyrics();
file_tags.remove_all_synchronised_lyrics();
if let Err(error) = file_tags.write_to_path(&track.path, id3::Version::Id3v24) {
eprintln!(
"\n{}",
format!("Failed to remove tags for: {}\n{}", track.path.display(), error).red()
);
}
file_tags.set_artist(track.tags.formatted_artist.clone());
file_tags.set_title(track.tags.formatted_title.clone());
file_tags.set_album(track.tags.formatted_album.clone());
file_tags.set_genre(track.tags.formatted_genre.clone());
if let Err(error) = file_tags.write_to_path(&track.path, id3::Version::Id3v24) {
eprintln!(
"\n{}",
format!("Failed to write tags for: {}\n{}", track.path.display(), error).red()
);
} else if track.tags.changed() {
track.tags_updated = true;
self.stats.num_tags_fixed += 1;
}
if !self.config.print_only
&& (self.config.force || utils::confirm())
&& Self::write_tags(&track, &mut file_tags)
&& track.tags.changed()
{
track.tags_updated = true;
self.stats.num_tags_fixed += 1;
}
if track.tags.changed() {
utils::print_divider(&track.tags.formatted_name());
Expand Down Expand Up @@ -400,6 +379,36 @@ impl TrackRenamer {
Ok(())
}

fn write_tags(track: &&mut Track, file_tags: &mut Tag) -> bool {
// Remove genre first to try to get rid of old ID3v1 genre IDs
file_tags.remove_genre();
file_tags.remove_disc();
file_tags.remove_total_discs();
file_tags.remove_track();
file_tags.remove_total_tracks();
file_tags.remove_all_lyrics();
file_tags.remove_all_synchronised_lyrics();
if let Err(error) = file_tags.write_to_path(&track.path, id3::Version::Id3v24) {
eprintln!(
"\n{}",
format!("Failed to remove tags for: {}\n{}", track.path.display(), error).red()
);
}
file_tags.set_artist(track.tags.formatted_artist.clone());
file_tags.set_title(track.tags.formatted_title.clone());
file_tags.set_album(track.tags.formatted_album.clone());
file_tags.set_genre(track.tags.formatted_genre.clone());
if let Err(error) = file_tags.write_to_path(&track.path, id3::Version::Id3v24) {
eprintln!(
"\n{}",
format!("Failed to write tags for: {}\n{}", track.path.display(), error).red()
);
false
} else {
true
}
}

/// Count and print the total number of each file extension in the file list.
fn print_extension_counts(&self) {
println!("{}", "File format counts:".bold());
Expand Down

0 comments on commit 74c4814

Please sign in to comment.