#!/usr/bin/env bash set -euo pipefail IFS=$'\n\t' # === CONFIGURATION === export DOSSIER_SOURCE="${HOME}/Downloads" export DOSSIER_DESTINATION_RAW="${HOME}/Documents/.DanceVideos/raw" sanitize_name() { local name="$1" basename "$name" \ | tr '[:upper:]' '[:lower:]' \ | tr ' ' '_' \ | tr -cd '[:alnum:]._-\n' } export -f sanitize_name # Fonction pour vérifier et déplacer un fichier check_and_move() { local fichier="$1" local taille1 taille2 taille1=$(stat -f "%z" "$fichier") sleep 5 taille2=$(stat -f "%z" "$fichier") if [ "$taille1" -eq "$taille2" ] && [ "$taille2" -gt 0 ]; then echo "Déplacement de $(basename "$fichier")" rsync -av --remove-source-files "$fichier" "$DOSSIER_DESTINATION_RAW/$(sanitize_name "$(basename "$fichier")")" else echo "Fichier $(basename "$fichier") encore en cours de réception." fi } export -f check_and_move import_downloaded_file() { find "$DOSSIER_SOURCE" -maxdepth 1 -type f \( -iname "*.mp4" -o -iname "*.mov" \) -print0 \ | parallel -0 -j 4 check_and_move } import_downloaded_file ## export DOSSIER_DESTINATION_MP4="$(dirname $DOSSIER_DESTINATION_RAW)/videos" iphone_video() { local raw="$1" echo iphone $raw } export -f iphone_video screen_video() { local raw="$1" echo screen $raw } export -f screen_video whatsapp_video() { local raw="$1" echo whatsapp $raw } export -f whatsapp_video convert_raws() { # ##_##.mov find "$DOSSIER_DESTINATION_RAW" -type f \ -name "*.mov" \ -print0 | parallel -0 -j 4 iphone_video find "$DOSSIER_DESTINATION_RAW" -type f \ -name "screenrecording*.mp4" \ -print0 | parallel -0 -j 4 screen_video find "$DOSSIER_DESTINATION_RAW" -type f \ -name '*[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]*.mp4' \ -print0 | parallel -0 -j 4 whatsapp_video } convert_raws