#!/usr/bin/env bash italic="\033[3m" #underline="\033[4m" #ita_under="\033[3;4m" #bgd="\033[1;4;31m" red="\033[1;31m" green="\033[1;32m" #yellow="\033[1;33m" bold="\033[1m" #box="\033[1;41m" reset="\033[0m" shopt -s globstar # Source image folder #ln -s ~/Sites/sls/photos/img ~/Pictures/Export/photos-du-mois [[ "$input_path" == "" ]] && SRC="$HOME/Sites/sls/photos/img" || SRC="$input_path" # Server server=( "ftp.cluster011.ovh.net" "sur-le-sentier.fr" "clicclac.synology.me" ) user=( "funnymac" "sentier" "bruno" ) dest=( "www/zenphoto/albums/photos-du-mois/" "httpdocs/photos/img/" "/volume1/web/photos/img/" ) port=( "22" "22" "42666" ) : <<'END_COMMENT' user=sentier server="sur-le-sentier.fr" path="httpdocs/photos/img/" port=22 # ssh, scp user=bruno server="clicclac.synology.me" path="/volume1/web/" port=42666 user=funnymac server=ftp.cluster011.ovh.net path="www/zenphoto/albums/photos-du-mois/" port=22 END_COMMENT last_remote_files() { current_year=$(date +"%Y") last_year=$(( current_year-1 )) for ((i=0 ; i<"${#server[@]}" ; i++)) do #rsync sentier@sur-le-sentier.fr:httpdocs/photos/img/'*' | grep -E "$last_year.jpg|$current_year.jpg" # rsync -e "/usr/bin/ssh -p 42666" --rsync-path=/bin/rsync -zarvh "bruno@clicclac.synology.me:/volume1/web/photos/img/*" echo -e "${bold}${server[$i]}${reset}:${dest[$i]}" if [ "${server[$i]}" == "clicclac.synology.me" ]; then lrf=$(rsync -e "/usr/bin/ssh -p ${port[$i]}" --rsync-path=/bin/rsync -zarvh "${user[$i]}"@"${server[$i]}":"${dest[$i]}*" | grep -E "$last_year.jpg|$current_year.jpg") else lrf=$(rsync -zarvh -e "ssh -p ${port[$i]}" "${user[$i]}"@"${server[$i]}":"${dest[$i]}*" | grep -E "$last_year.jpg|$current_year.jpg") fi echo "$lrf" l=$(echo "$lrf" | awk '{print $NF}' | awk -F"." '{print $1}') # 1_2022 e="" while IFS= read -r line; do m=$(echo "${line}" | awk -F"_" '{printf "%02d\n", $1}') y=$(echo "${line}" | awk -F"_" '{print $2}') d="$y-$m-01" ts=$(date --date="$d" +"%s") e+="$ts\n" done <<< "$l" echo g=$(echo -e "$e" | sort -n | sed -n '$p') last=$(date -d "@$g" +"%B %Y") echo -e "More recent picture on ${server[$i]}: ${bold}$last${reset}" echo done } # 2022-12-31 REGEX="(([0-9]{4,}|[Y]{4,})-([0-9]{2,}|[M]{2,})-([0-9]{2,}|[D]{2,}))" # http://patorjk.com/software/taag/#p=display&f=Calvin%20S&t=photo_du_mois.sh echo -e "┌─┐┬ ┬┌─┐┌┬┐┌─┐ ┌┬┐┬ ┬ ┌┬┐┌─┐┬┌─┐ ┌─┐┬ ┬" echo -e "├─┘├─┤│ │ │ │ │ │││ │ ││││ ││└─┐ └─┐├─┤" echo -e "┴ ┴ ┴└─┘ ┴ └─┘─────┴┘└─┘────┴ ┴└─┘┴└─┘o└─┘┴ ┴" echo echo -e "\n${bold}0. Verify last uploads on remote servers ${reset}\n" last_remote_files echo -e "\n${bold}1. From Lightroom Classic, export ${italic}collection 'Photo du mois'${reset}${bold} => $SRC${reset}\n" echo -e "Done ! " read -r -p "" echo -e "\n${bold}2. Renaming Photos files...${reset}" for FILE in "${SRC}"/**/*.{jpg,jpeg} do filename=$(basename "$FILE") #extension=${filename##*.} filename=${filename%.*} if [[ $filename =~ $REGEX ]]; then MATCH="${BASH_REMATCH[0]}" y=$(echo "${MATCH}" | awk -F"-" '{print $1}') m=$(echo "${MATCH}" | awk -F"-" '{print $2}') if [ "${m:0:1}" = "0" ]; then m=${m:1:7}; fi filepath=$(dirname "$FILE") newname="$m"_"$y".jpg newfilename="$filepath/$m"_"$y".jpg echo -e "Rename ${bold}$filename${reset} to ${bold}$newname${reset}..." mv "${FILE}" "$newfilename" movies+=("${newfilename}") fi done if [ "${#movies[@]}" -gt 0 ]; then echo -e "\n${bold}${#movies[@]} new images found !${reset}\n" else echo -e "\n${bold}${red}No new images !${reset}" echo -e "${bold}Quit.${reset}\n" exit fi for ((i=0 ; i<"${#server[@]}" ; i++)) do echo -e "\n\n${bold}3. Transfert Photos files to ${italic}${server[$i]}${reset}${bold}...${reset}" if nmap "${server[$i]}" -PN -p "${port[$i]}" | grep open &>/dev/null; then for new in "${movies[@]}" do echo -e "Transfering ${bold}$new${reset} to ${bold}${server[$i]}${reset}..." filename=$(basename "$new") #extension=${filename##*.} filename=${filename%.*} if [ "${server[$i]}" == "clicclac.synology.me" ]; then scp -O -P "${port[$i]}" "$new" "${user[$i]}"@"${server[$i]}":"${dest[$i]}" else scp -P "${port[$i]}" "$new" "${user[$i]}"@"${server[$i]}":"${dest[$i]}" fi result=$? [ "$result" -eq 0 ] && echo -e "${green}Successful transfert...${reset}\n" || echo -e "${red}Error during transfert !${reset}\n" done # scp 5_2022_mozcjpeg.jpg sentier@sur-le-sentier.fr:httpdocs/photos/img/ # scp 1_2022.jpg funnymac@ftp.cluster011.ovh.net:www/zenphoto/albums/photos-du-mois/ if [ "${server[$i]}" == "clicclac.synology.me" ]; then rsync -e "/usr/bin/ssh -p ${port[$i]}" --rsync-path=/bin/rsync --exclude-from="$HOME/.exclude-rsync.txt" -zarvh --stats --progress "$SRC/" "${user[$i]}"@"${server[$i]}":"${dest[$i]}" else rsync --exclude-from="$HOME/.exclude-rsync.txt" -zarvh --stats --progress "$SRC/" "${user[$i]}"@"${server[$i]}":"${dest[$i]}" fi #result=$? #[ "$result" -eq 0 ] && echo -e "\n${green}Successful synchronization...${reset}" || echo -e "\n${red}Error during synchronization !${reset}" #notification "MkDocs: sending Docs to ${server3[server]}..." "${server3[server]}" $result if [ "$i" -eq 0 ]; then # Dans zenphoto, mettre en cache les photos echo -e "\n${bold}4. Go to ${italic}https://clicclac.info/zenphoto/${reset}${bold} and update cache manager...${reset}\n" open https://clicclac.info/zenphoto/zp-core/zp-extensions/cacheManager/cacheImages.php?album=photos-du-mois elif [ "$i" -eq 1 ]; then echo -e "\n${bold}4. Open ${italic}https://${server[$i]}/insert_bdd.php${reset}${bold}...${reset}\n" open https://"${server[$i]}"/insert_bdd.php fi else echo -e "\n${bold}${red}Server ${server[$i]} down !${reset}\n" fi done