From 7c213fe037ce229c9004e1efe67369f6b1fcefa1 Mon Sep 17 00:00:00 2001 From: Nedko Date: Mon, 1 Jul 2024 15:39:42 +0300 Subject: [PATCH] Added MP3 tagging --- README.md | 17 ++++++++++++++- main.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 54c8890..d9d406c 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,22 @@ https://github.com/nlohmann/json # eyeD3 https://eyed3.readthedocs.io/en/latest/ * For MP3 tagging -* TODO: Add info here +``` + // Common + --encoding utf8 + --preserve-file-times + + // First Step - Remove Images + --remove-all-images + + // Second Step - Change what is needed + --add-image "...":FRONT_COVER + --artist "..." + --album "..." + --title "..." + --track ... + +``` # metaflac https://xiph.org/flac/download.html diff --git a/main.cpp b/main.cpp index da22937..2a3d1c5 100644 --- a/main.cpp +++ b/main.cpp @@ -29,6 +29,42 @@ string gen_resize_command(const string& release_folder, const string& convert_ex return cmd; } +string gen_mp3_clear(const string& filepath, const string& eyed3_exec) +{ + string cmd; + + cmd = eyed3_exec; + cmd += " --preserve-file-times --remove-all-images \""; + cmd += filepath; + cmd += "\" > /dev/null 2>&1"; + + return cmd; +} + +string gen_mp3_set_tags(const string& filepath, const string& artist, + const string& title, const string& album, int track_num, + const string& cover_filepath, string eyed3_exec) +{ + string cmd; + + cmd = eyed3_exec; + cmd += " --encoding utf8 --preserve-file-times --add-image \""; + cmd += cover_filepath; + cmd += "\":FRONT_COVER --artist \""; + cmd += artist; + // cmd += "\" --album \""; + // cmd += album; + cmd += "\" --title \""; + cmd += title; + cmd += "\" --track "; + cmd += to_string(track_num); + cmd += " \""; + cmd += filepath; + cmd += "\" > /dev/null 2>&1"; + + return cmd; +} + int main(int argc, char **argv) { // Config stuff @@ -125,7 +161,6 @@ int main(int argc, char **argv) cout << "Could not resize cover for release - " << release.catalog_id << endl; continue; } - break; // Download tracks (1 -- N) for (Track& track : release.tracks) @@ -143,7 +178,30 @@ int main(int argc, char **argv) continue; } - // TODO: Tag MP3 + // Clean MP3 Images + ok = exec_cmd(gen_mp3_clear(filepath, eyed3_exec)); + if (!ok) + { + cout << "Could not clear images for MP3 track " << track.number << + " from release " << release.catalog_id << endl; + continue; + } + + // Tag MP3 + ok = exec_cmd( + gen_mp3_set_tags(filepath, + track.artist, + track.title, + release.title, + track.number, + build_fname(release_folder, "", "Cover_small.jpg"), + eyed3_exec)); + if (!ok) + { + cout << "Could not tag MP3 track " << track.number << + " from release " << release.catalog_id << endl; + continue; + } // Download FLAC filepath = build_fname(flac_folder, "", filename);