added prefix ignore
This commit is contained in:
@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user