diff --git a/TODO b/TODO index 0a504d0..8d58706 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,2 @@ Add Cover Resize via lib or command ??? -Add MP3 Tagging -Add FLAC Tagging Implement main diff --git a/main.cpp b/main.cpp index 06c80b5..444c7ef 100644 --- a/main.cpp +++ b/main.cpp @@ -572,6 +572,94 @@ bool rename_cover(const string& path, bool is_jpg) return true; } +bool tag_MP3(const string& path, const string& filename, bool is_single_dir, + const string& title, const string& album, const string& artist, + const string& tracknum) +{ + string cmd; + + cmd = "id3edit --set-name \""; + cmd += title; + cmd += "\" --set-album \""; + cmd += album; + cmd += "\" --set-artist \""; + cmd += artist; + cmd += "\" --set-track "; + cmd += tracknum; + cmd += " --set-artwork \""; + cmd += path; + cmd += FOLDER_DELIM; + cmd += "Cover_small.jpg\" \""; + cmd += path; + cmd += FOLDER_DELIM; + if (!is_single_dir) + { + cmd += "MP3"; + cmd += FOLDER_DELIM; + } + cmd += filename; + cmd += ".mp3\""; + + return system_command(cmd); +} + +bool tag_FLAC(const string& path, const string& filename, bool is_single_dir, + const string& title, const string& album, const string& artist, + const string& tracknum) +{ + string cmd; + bool ok; + + // First command - remove metadata + cmd = "metaflac --preserve-modtime --no-utf8-convert "; + cmd += "--remove --block-type=PICTURE "; + cmd += "--remove-tag=TITLE "; + cmd += "--remove-tag=ARTIST "; + cmd += "--remove-tag=ALBUM "; + cmd += "--remove-tag=TRACKNUMBER \""; + cmd += path; + cmd += FOLDER_DELIM; + if (!is_single_dir) + { + cmd += "FLAC"; + cmd += FOLDER_DELIM; + } + cmd += filename; + cmd += ".flac\""; + + ok = system_command(cmd); + if (!ok) + { + return false; + } + + // Second command - set metadata + cmd = "metaflac --preserve-modtime --no-utf8-convert --dont-use-padding "; + cmd += "\"--import-picture-from=3|image/jpeg|||"; + cmd += path; + cmd += FOLDER_DELIM; + cmd += "Cover_small.jpg\" \"--set-tag=TITLE="; + cmd += title; + cmd += "\" \"--set-tag=ARTIST="; + cmd += artist; + cmd += "\" \"--set-tag=ALBUM="; + cmd += album; + cmd += "\" --set-tag=TRACKNUMBER="; + cmd += tracknum; + cmd += " \""; + cmd += path; + cmd += FOLDER_DELIM; + if (!is_single_dir) + { + cmd += "FLAC"; + cmd += FOLDER_DELIM; + } + cmd += filename; + cmd += ".flac\""; + + return system_command(cmd); +} + bool full_donwload(const string& path, const string& release_prefix, int release_num, const string& release_suffix) { @@ -686,7 +774,13 @@ bool full_donwload(const string& path, const string& release_prefix, return false; } - // TODO: Tag MP3 + // Tag MP3 + ok = tag_MP3(release_dir, track_filename, is_single_dir, tags[i].title, + release_artist_title.second, tags[i].artist, tags[i].number); + if (!ok) + { + return false; + } // Download Track (FLAC) ok = download_track(info["Release"]["Id"], info["Tracks"][i]["Id"], @@ -696,7 +790,13 @@ bool full_donwload(const string& path, const string& release_prefix, return false; } - // TODO: Tag FLAC + // Tag FLAC + ok = tag_FLAC(release_dir, track_filename, is_single_dir, tags[i].title, + release_artist_title.second, tags[i].artist, tags[i].number); + if (!ok) + { + return false; + } } return true;