From c127ebf06352e74637c835a8a960f567112d1223 Mon Sep 17 00:00:00 2001 From: Simon Rieger Date: Wed, 1 May 2024 00:12:03 +0200 Subject: [PATCH] add unify script for flac work with metaflac --- unify-tags-metaflac.sh | 47 +++++++++++++++++++++++++++++ unify-tags.sh => unify-tags-opus.sh | 2 ++ 2 files changed, 49 insertions(+) create mode 100755 unify-tags-metaflac.sh rename unify-tags.sh => unify-tags-opus.sh (98%) diff --git a/unify-tags-metaflac.sh b/unify-tags-metaflac.sh new file mode 100755 index 0000000..e94cb50 --- /dev/null +++ b/unify-tags-metaflac.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -x + +#!/bin/bash + +# Pfad zum Basisverzeichnis der Musikdateien +BASE_DIR="/media/music/Test-Gaming-Soundtracks" + +# Sammle alle Verzeichnisse +directories=($(find "$BASE_DIR" -type d -print)) + +# Gehe durch jedes Unterverzeichnis +for dir in "${directories[@]}"; do + echo "Verarbeite Verzeichnis: $dir" + # Initialisiere ein Assoziativ-Array für Künstlerzählungen + declare -A artist_count + + # Finde alle FLAC-Dateien im aktuellen Verzeichnis und lese die Artist-Tags + while IFS= read -r file; do + artist=$(metaflac --show-tag=ARTIST "$file" | sed 's/ARTIST=//') + if [[ -n "$artist" ]]; then + ((artist_count["$artist"]++)) + fi + done < <(find "$dir" -maxdepth 1 -type f -name '*.flac') + + # Finde den am häufigsten vorkommenden Artist + max_count=0 + common_artist="" + for artist in "${!artist_count[@]}"; do + if [[ ${artist_count[$artist]} -gt $max_count ]]; then + max_count=${artist_count[$artist]} + common_artist=$artist + fi + done + + # Entferne den alten Artist-Tag und setze den häufigsten Artist-Tag für alle Dateien im Verzeichnis + if [[ -n "$common_artist" ]]; then + echo "Häufigster Künstler in '$dir' ist: $common_artist" + find "$dir" -maxdepth 1 -type f -name '*.flac' -exec bash -c 'metaflac --remove-tag=ARTIST "$0" && metaflac --set-tag=ARTIST="'"$common_artist"'" "$0"' {} \; + else + echo "Kein Künstler gefunden in '$dir'" + fi + + # Lösche das Assoziativ-Array für das nächste Verzeichnis + unset artist_count +done diff --git a/unify-tags.sh b/unify-tags-opus.sh similarity index 98% rename from unify-tags.sh rename to unify-tags-opus.sh index 4b54b9d..5a530ef 100755 --- a/unify-tags.sh +++ b/unify-tags-opus.sh @@ -1,5 +1,7 @@ #!/bin/bash +# Broken because it removed the cover + set -x # Pfad zum Basisverzeichnis der Musikdateien