metadata scripts
This commit is contained in:
1 parent
74a3cfe8ed
commit
cff21a4dab
4 files changed
+256
No files matched your search
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
|
||||
DRY_RUN=false
|
||||
DELETE=false
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--dry-run)
|
||||
DRY_RUN=true
|
||||
shift
|
||||
;;
|
||||
--delete)
|
||||
DELETE=true
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ $# -ne 1 ]]; then
|
||||
echo "Usage: $0 [--dry-run] [--delete] file.txt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
list="$1"
|
||||
|
||||
while IFS= read -r file; do
|
||||
|
||||
[[ -z "$file" ]] && continue
|
||||
|
||||
if [[ ! -e "$file" ]]; then
|
||||
echo "ERROR: Missing file: $file"
|
||||
exit 1
|
||||
fi
|
||||
if [[ -d "$file" ]]; then
|
||||
echo "WARNING: Is a directory, skipping: $file"
|
||||
continue
|
||||
fi
|
||||
# Get comment from ID3v2
|
||||
comment=$(kid3-cli "$file" \
|
||||
-c "tag 2" \
|
||||
-c "get comment" 2>/dev/null)
|
||||
|
||||
[[ -z "$comment" ]] && continue
|
||||
|
||||
echo
|
||||
echo "File: $file"
|
||||
echo "Comment: $comment"
|
||||
|
||||
composer=""
|
||||
|
||||
# Match: read by Name; text
|
||||
if [[ "$comment" =~ ^[Rr]ead[[:space:]]+[Bb]y[[:space:]]+([^;]+)\; ]]; then
|
||||
composer="${BASH_REMATCH[1]}"
|
||||
composer="$(echo "$composer" | sed 's/[[:space:]]*$//')"
|
||||
|
||||
echo "Found narrator: $composer"
|
||||
|
||||
if $DRY_RUN; then
|
||||
echo "DRY RUN: set composer '$composer', delete comment"
|
||||
else
|
||||
kid3-cli "$file" \
|
||||
-c "tag 2" \
|
||||
-c "set composer '$composer'" \
|
||||
-c "set comment ''" \
|
||||
-c save
|
||||
fi
|
||||
|
||||
elif [[ ${#comment} -lt 40 ]]; then
|
||||
|
||||
echo "Short comment (${#comment} chars): $comment"
|
||||
|
||||
if $DELETE; then
|
||||
if $DRY_RUN; then
|
||||
echo "DRY RUN: delete comment"
|
||||
else
|
||||
kid3-cli "$file" \
|
||||
-c "tag 2" \
|
||||
-c "set comment ''" \
|
||||
-c save
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
done < "$list"
|
||||
Reference in new issue
Block a user