Nicolás Ortega Froysa
a361543acf
A script to automatically copy files from the camera. It will also automatically convert MOV to MP4.
96 lines
1.7 KiB
Bash
Executable File
96 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
|
|
CAMERA_DEVICE=""
|
|
MOUNT_DIR="/tmp/camera-mount"
|
|
OUTPUT_DIR=""
|
|
REMOVE_FILES=0
|
|
|
|
function print_usage() {
|
|
echo "USAGE: ${0##*/} -d <device> -o <dir> [-t <dir>] [-r]"
|
|
}
|
|
|
|
while getopts "d:o:t:rh" opt
|
|
do
|
|
case "$opt" in
|
|
'd')
|
|
CAMERA_DEVICE=${OPTARG}
|
|
;;
|
|
'o')
|
|
OUTPUT_DIR=${OPTARG}
|
|
;;
|
|
't')
|
|
MOUNT_DIR="${OPTARG}"
|
|
;;
|
|
'r')
|
|
REMOVE_FILES=1
|
|
;;
|
|
'h')
|
|
print_usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
print_usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$CAMERA_DEVICE" ]
|
|
then
|
|
echo "Failed to set the camera device."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$OUTPUT_DIR" ]
|
|
then
|
|
echo "Failed to set the output directory."
|
|
exit 1
|
|
fi
|
|
|
|
if ! mkdir "$MOUNT_DIR"
|
|
then
|
|
echo "Unable to create mount directory '$MOUNT_DIR'."
|
|
exit 1
|
|
fi
|
|
if ! sudo mount -o "uid=$(id --user),gid=$(id --group)" "$CAMERA_DEVICE" "$MOUNT_DIR"
|
|
then
|
|
rmdir "$MOUNT_DIR"
|
|
fi
|
|
|
|
while IFS= read -r -d '' INPUT_FILE
|
|
do
|
|
OUTPUT_PATH="$OUTPUT_DIR/${INPUT_FILE##*/}"
|
|
if ! [ -f "$OUTPUT_PATH" ]
|
|
then
|
|
echo "Copying ${INPUT_FILE} to ${OUTPUT_PATH} ..."
|
|
cp "$INPUT_FILE" "${OUTPUT_PATH::-4}.jpg"
|
|
fi
|
|
|
|
if [ $REMOVE_FILES -eq 1 ]
|
|
then
|
|
echo "Removing ${INPUT_FILE} and ${INPUT_FILE::-4}.THM ..."
|
|
rm -f "$INPUT_FILE" "${INPUT_FILE::-4}.THM"
|
|
fi
|
|
done < <(find "$MOUNT_DIR" -type f -name '*.JPG' -print0)
|
|
|
|
while IFS= read -r -d '' INPUT_FILE
|
|
do
|
|
OUTPUT_PATH="$OUTPUT_DIR/${INPUT_FILE##*/}"
|
|
if ! [ -f "$OUTPUT_PATH" ]
|
|
then
|
|
echo "Converting ${INPUT_FILE} to MP4 at ${OUTPUT_PATH} ..."
|
|
ffmpeg -loglevel fatal -nostdin -i "$INPUT_FILE" "${OUTPUT_PATH::-4}.mp4"
|
|
fi
|
|
|
|
if [ $REMOVE_FILES -eq 1 ]
|
|
then
|
|
echo "Removing ${INPUT_FILE} and ${INPUT_FILE::-4}.THM ..."
|
|
rm -f "$INPUT_FILE" "${INPUT_FILE::-4}.THM"
|
|
fi
|
|
done < <(find "$MOUNT_DIR" -type f -name '*.MOV' -print0)
|
|
|
|
sudo umount "$MOUNT_DIR"
|
|
rmdir "$MOUNT_DIR"
|