chore: initial commit of Server Configs
This commit is contained in:
61
httpserver/data/mew-neocities/library/doit.sh
Normal file
61
httpserver/data/mew-neocities/library/doit.sh
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
# Renames images and videos in ./ based on metadata date
|
||||
# Requires: exiftool
|
||||
# Format: YYYY-MM-DD_HH-MM-SS.ext (appends _N if duplicate)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
TARGET="${1:-.}"
|
||||
|
||||
if ! command -v exiftool &>/dev/null; then
|
||||
echo "Error: exiftool not found. Install it with: sudo apt install libimage-exiftool-perl" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
shopt -s nullglob nocaseglob
|
||||
files=("$TARGET"/*.{jpg,jpeg,png,tiff,tif,heic,webp,mp4,mov,m4v,avi,mkv,webm})
|
||||
shopt -u nullglob nocaseglob
|
||||
|
||||
if [[ ${#files[@]} -eq 0 ]]; then
|
||||
echo "No image files found in: $TARGET"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for file in "${files[@]}"; do
|
||||
[[ -f "$file" ]] || continue
|
||||
|
||||
dir=$(dirname "$file")
|
||||
ext="${file##*.}"
|
||||
ext_lower="${ext,,}"
|
||||
|
||||
# Try date tags in priority order
|
||||
date_str=$(exiftool -d "%Y-%m-%d_%H-%M-%S" \
|
||||
-DateTimeOriginal \
|
||||
-CreateDate \
|
||||
-ModifyDate \
|
||||
-FileModifyDate \
|
||||
-s3 "$file" 2>/dev/null | head -1)
|
||||
|
||||
if [[ -z "$date_str" || "$date_str" == *"0000"* ]]; then
|
||||
echo "SKIP (no date): $file"
|
||||
continue
|
||||
fi
|
||||
|
||||
new_base="$dir/${date_str}.${ext_lower}"
|
||||
|
||||
# Handle duplicates
|
||||
if [[ "$file" == "$new_base" ]]; then
|
||||
echo "OK (unchanged): $file"
|
||||
continue
|
||||
fi
|
||||
|
||||
counter=1
|
||||
final="$new_base"
|
||||
while [[ -e "$final" ]]; do
|
||||
final="$dir/${date_str}_${counter}.${ext_lower}"
|
||||
((counter++))
|
||||
done
|
||||
|
||||
mv -- "$file" "$final"
|
||||
echo "RENAMED: $(basename "$file") -> $(basename "$final")"
|
||||
done
|
||||
Reference in New Issue
Block a user