Skip to content

Commit

Permalink
Add script to list tags
Browse files Browse the repository at this point in the history
  • Loading branch information
cfgnunes committed Mar 26, 2024
1 parent 7167662 commit a629b04
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions Audio MP3/Tag - List ID3 tags
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env bash

# Source the script 'common-functions.sh'.
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
ROOT_DIR=$(grep --only-matching "^.*scripts[^/]*" <<<"$SCRIPT_DIR")
source "$ROOT_DIR/common-functions.sh"

_main() {
local input_files=""
local output_dir=""

# Execute initial checks.
_check_dependencies "command=id3v2"
_display_wait_box "2"
input_files=$(_get_files "par_type=file; par_recursive=true; par_select_mime=audio/mpeg; par_skip_extension=bak")

# Execute the function '_main_task' for each file in parallel.
_run_task_parallel "$input_files" "$output_dir"

local std_output=""
std_output=$(_storage_text_read_all)
std_output=$(_text_sort "$std_output")

_display_list_box "$std_output" "--column=Tag;--column=Artist;--column=Title;--column=File"
}

_main_task() {
local input_file=$1
local output_dir=$2
local std_output=""

# Run the main process.
std_output=$(id3v2 --list "$input_file" 2>&1)
_check_output "$?" "$std_output" "$input_file" "" || return 1
# shellcheck disable=SC2001
std_output=$(tr -s " _-" <<<"$std_output")
# shellcheck disable=SC2001
std_output=$(sed "s|: |$FIELD_SEPARATOR|" <<<"$std_output")

local tag_artist=""
local tag_title=""
local tag_version=""
tag_artist=$(grep " (Lead performer" <<<"$std_output" | cut -d "$FIELD_SEPARATOR" -f 2)
tag_title=$(grep " (Title" <<<"$std_output" | cut -d "$FIELD_SEPARATOR" -f 2)

# Get ID3 version.
if grep --quiet "id3v1 tag info for" <<<"$std_output" &>/dev/null; then
tag_version="ID3v1"
fi
if grep --quiet "id3v2 tag info for" <<<"$std_output" &>/dev/null; then
if [[ -n "$tag_version" ]]; then
tag_version+=" + "
fi
tag_version+="ID3v2"
fi

# Check if the values are not empty.
if [[ -z "$tag_version" ]]; then
tag_version="(empty)"
fi
if [[ -z "$tag_artist" ]]; then
tag_artist="(empty)"
fi
if [[ -z "$tag_title" ]]; then
tag_title="(empty)"
fi

_storage_text_write_ln "$tag_version$FIELD_SEPARATOR$tag_artist$FIELD_SEPARATOR$tag_title$FIELD_SEPARATOR$(_text_remove_pwd "$input_file")"
}

_main "$@"

0 comments on commit a629b04

Please sign in to comment.