diff --git a/jpg-normalize.sh b/jpg-normalize.sh new file mode 100644 index 0000000..f0f5d35 --- /dev/null +++ b/jpg-normalize.sh @@ -0,0 +1,129 @@ +#!/bin/bash + +# OpenCand JPEG Normalization Script +# This script normalizes .jpeg/.JPEG files to .jpg extension in candidate photo directories + +set -e # Exit on any error + +# Configuration +PHOTOS_DIR="./fotos_cand" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Statistics counters +TOTAL_DIRS=0 +TOTAL_JPEG_FILES=0 +FILES_RENAMED=0 +FILES_SKIPPED=0 +ERRORS=0 + +echo -e "${YELLOW}đŸ–ŧī¸ OpenCand JPEG Normalization Script${NC}" +echo "========================================" + +# Check if photos directory exists +if [ ! -d "$PHOTOS_DIR" ]; then + echo -e "${RED}❌ Error: Photos directory '${PHOTOS_DIR}' not found${NC}" + exit 1 +fi + +echo -e "${YELLOW}📋 Pre-normalization checks:${NC}" +echo "✅ Photos directory exists" + +# Change to photos directory +cd "$PHOTOS_DIR" || { + echo -e "${RED}❌ Error: Cannot access photos directory${NC}" + exit 1 +} + +echo -e "${BLUE}📂 Scanning directories for JPEG files...${NC}" + +# Enable case-insensitive globbing +shopt -s nocaseglob + +# First pass: count files and directories +for dir in */; do + [ -d "$dir" ] || continue + TOTAL_DIRS=$((TOTAL_DIRS + 1)) + + cd "$dir" || continue + for f in *.jpeg; do + [ -f "$f" ] || continue + TOTAL_JPEG_FILES=$((TOTAL_JPEG_FILES + 1)) + done + cd .. +done + +echo -e "${BLUE}📊 Scan results:${NC}" +echo " Directories found: $TOTAL_DIRS" +echo " JPEG files found: $TOTAL_JPEG_FILES" +echo "" + +if [ $TOTAL_JPEG_FILES -eq 0 ]; then + echo -e "${GREEN}✅ No JPEG files found to normalize. All files are already in correct format!${NC}" + exit 0 +fi + +echo -e "${YELLOW}🔄 Starting normalization process...${NC}" + +# Second pass: perform the actual renaming +for dir in */; do + [ -d "$dir" ] || continue + + cd "$dir" || { + echo -e "${RED}âš ī¸ Warning: Cannot access directory '$dir'${NC}" + ERRORS=$((ERRORS + 1)) + continue + } + + # Process JPEG files in current directory + for f in *.jpeg; do + [ -f "$f" ] || continue + + # Extract base name without extension + base="${f%.[jJ][pP][eE][gG]}" + newfile="${base}.jpg" + + # Check if target file already exists + if [ -e "$newfile" ]; then + FILES_SKIPPED=$((FILES_SKIPPED + 1)) + else + if mv "$f" "$newfile" 2>/dev/null; then + FILES_RENAMED=$((FILES_RENAMED + 1)) + else + echo -e "${RED}âš ī¸ Warning: Failed to rename '$f' in directory '$dir'${NC}" + ERRORS=$((ERRORS + 1)) + fi + fi + done + + cd .. +done + +echo "" +echo -e "${YELLOW}📈 Normalization Statistics:${NC}" +echo " Directories processed: $TOTAL_DIRS" +echo " Total JPEG files found: $TOTAL_JPEG_FILES" +echo -e " Files renamed: ${GREEN}$FILES_RENAMED${NC}" +echo -e " Files skipped (target exists): ${YELLOW}$FILES_SKIPPED${NC}" +echo -e " Errors encountered: ${RED}$ERRORS${NC}" + +echo "" +if [ $ERRORS -eq 0 ]; then + echo -e "${GREEN}🎉 Normalization completed successfully!${NC}" + if [ $FILES_RENAMED -gt 0 ]; then + echo -e "${GREEN}✅ Successfully renamed $FILES_RENAMED JPEG files to JPG format${NC}" + fi + if [ $FILES_SKIPPED -gt 0 ]; then + echo -e "${YELLOW}â„šī¸ Skipped $FILES_SKIPPED files (target .jpg files already existed)${NC}" + fi +else + echo -e "${YELLOW}âš ī¸ Normalization completed with $ERRORS errors${NC}" + echo -e "${YELLOW}💡 Please check the warnings above and resolve any issues${NC}" +fi + +echo "========================================" \ No newline at end of file