added prefix ignore

This commit is contained in:
2025-10-21 18:19:00 +02:00
parent 324459bb36
commit a362d9373c

View File

@ -72,6 +72,9 @@ DATESTAMP=$(date +%y%m%d)
LOG_DIR="$HOME/log" LOG_DIR="$HOME/log"
LOG_FILE="$LOG_DIR/videocmp_select.${DATESTAMP}.log" LOG_FILE="$LOG_DIR/videocmp_select.${DATESTAMP}.log"
# Add to defaults section
IGNORE_PATTERN=""
# -------- helpers -------- # -------- helpers --------
need() { command -v "$1" >/dev/null 2>&1 || { echo "Missing dependency: $1" >&2; exit 3; }; } need() { command -v "$1" >/dev/null 2>&1 || { echo "Missing dependency: $1" >&2; exit 3; }; }
v() { [[ $VERBOSE -eq 1 ]] && echo "[LOG]" "$@" >&2; } v() { [[ $VERBOSE -eq 1 ]] && echo "[LOG]" "$@" >&2; }
@ -123,6 +126,7 @@ while (( i < ${#ARGS[@]} )); do
fi fi
;; ;;
--recursive|-r) RECURSIVE=1; i=$((i+1));; --recursive|-r) RECURSIVE=1; i=$((i+1));;
--ignore-prefix) IGNORE_PATTERN="${ARGS[i+1]:-}"; i=$((i+2));;
--help|-h) --help|-h)
grep -E '^# ' "$0" | sed 's/^# //' ; exit 0 ;; grep -E '^# ' "$0" | sed 's/^# //' ; exit 0 ;;
*) *)
@ -288,19 +292,52 @@ same_movie_or_skip() { # A B -> 0 if same (SSIM>=thr), else 1
} }
# ----- directory scan helpers/drivers ----- # ----- directory scan helpers/drivers -----
#scan_and_collect() {
# if [[ $RECURSIVE -eq 1 ]]; then
# mapfile -t FILES < <(find "$SCAN_DIR" -type f \( -iname '*.mp4' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mkv' \))
# else
# mapfile -t FILES < <(find "$SCAN_DIR" -maxdepth 1 -type f \( -iname '*.mp4' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mkv' \))
# fi
#}
scan_and_collect() { scan_and_collect() {
if [[ $RECURSIVE -eq 1 ]]; then if [[ $RECURSIVE -eq 1 ]]; then
mapfile -t FILES < <(find "$SCAN_DIR" -type f \( -iname '*.mp4' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mkv' \)) mapfile -t FILES < <(find "$SCAN_DIR" -type f \( -iname '*.mp4' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mkv' \) ! -name '._*')
else else
mapfile -t FILES < <(find "$SCAN_DIR" -maxdepth 1 -type f \( -iname '*.mp4' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mkv' \)) mapfile -t FILES < <(find "$SCAN_DIR" -maxdepth 1 -type f \( -iname '*.mp4' -o -iname '*.m4v' -o -iname '*.mov' -o -iname '*.mkv' \) ! -name '._*')
fi fi
} }
# key = first token of basename (without extension) before the first underscore; lowercased # key = first token of basename (without extension) before the first underscore; lowercased
#first_underscore_key() {
# local base extless key
# base="$(basename -- "$1")"
# extless="${base%.*}"
# if [[ "$extless" == *_* ]]; then
# key="${extless%%_*}"
# else
# key="$extless"
# fi
# echo "${key,,}"
#}
first_underscore_key() { first_underscore_key() {
local base extless key local base extless key
base="$(basename -- "$1")" base="$(basename -- "$1")"
extless="${base%.*}" extless="${base%.*}"
# Strip ignore pattern if specified
if [[ -n "$IGNORE_PATTERN" ]]; then
# Convert pattern to regex: idx* becomes idx[0-9]+
local pattern="$IGNORE_PATTERN"
pattern="${pattern//\*/[0-9]+}" # Replace * with [0-9]+
if [[ "$extless" =~ ^${pattern}_ ]]; then
# Remove the matched prefix and underscore
extless="${extless#"${BASH_REMATCH[0]}"}"
fi
fi
if [[ "$extless" == *_* ]]; then if [[ "$extless" == *_* ]]; then
key="${extless%%_*}" key="${extless%%_*}"
else else