Combined ingest scripts
This commit is contained in:
parent
3aa130e569
commit
4b6863b348
@ -1,276 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
######################################################################################
|
||||
# Name: Drone Ingest Script
|
||||
# Author: voidf1sh (Skylar Grant)
|
||||
# Environment: M1 MacBook Pro
|
||||
#
|
||||
# Mounts:
|
||||
# Drone SD: /dev/diskXsY (varies) -- /Volumes/NO NAME
|
||||
# NAS: //GUEST:@192.168.0.2/media -- /Volumes/media or /Volumes/media-1 (varies)
|
||||
#
|
||||
# Git: https://git.vfsh.dev/voidf1sh/custom-scripts
|
||||
# File: drone-ingest-mac.sh
|
||||
# Version: 0.0.29
|
||||
######################################################################################
|
||||
|
||||
# Some initial variables to work with
|
||||
# Set the date for folder creation
|
||||
CURRENT_DATE=$(date +%F)
|
||||
|
||||
# Paths
|
||||
# IMPORTANT: Paths should NEVER have trailing slashes, and ALWAYS have leading slashes
|
||||
# Drone's path to images
|
||||
SD_SRC_PATH="/DCIM/100MEDIA"
|
||||
# Where to ingest to on the Mac
|
||||
MAC_INGEST_PATH="$HOME/Pictures/Drone Ingest/$CURRENT_DATE"
|
||||
# Where to ingest to on the NAS
|
||||
NAS_INGEST_PATH="/Drone Ingest/$CURRENT_DATE"
|
||||
# NAS Network Address
|
||||
NAS_ADDRESS="//GUEST:@192.168.0.2/media"
|
||||
# SD Card Mount Point
|
||||
SD_MOUNT_POINT="/Volumes/Untitled"
|
||||
|
||||
######################################################################################
|
||||
# Functions
|
||||
######################################################################################
|
||||
|
||||
# Create and open Mac folders.
|
||||
create_folders_mac() {
|
||||
# Check if the parent ingest directory doesn't exist
|
||||
if [[ ! -d "$MAC_INGEST_PATH" ]]; then
|
||||
echo "Creating ingest directories at $MAC_INGEST_PATH/{DNG,JPG,MP4}..."
|
||||
# Since the parent doesn't exist, we create it and all children at once
|
||||
mkdir -p "$MAC_INGEST_PATH"/{DNG,JPG,MP4}
|
||||
# $? is the exit status of the last commmand, with 0 being success
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo "Success!"
|
||||
else
|
||||
echo "Failed to create directories at $MAC_INGEST_PATH"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# The parent directory exists, but do the children?
|
||||
echo "Parent ingest directory already exists. Checking for subdirectories..."
|
||||
# Iterate over each folder name
|
||||
for folder in DNG JPG MP4; do
|
||||
# If the subdir doesn't exist
|
||||
if [[ ! -d "$MAC_INGEST_PATH/$folder" ]]; then
|
||||
echo "Subdirectory $folder is missing, creating..."
|
||||
# Create the missing subdir
|
||||
mkdir -p "$MAC_INGEST_PATH/$folder"
|
||||
# $? is the exit status of the last commmand, with 0 being success
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo "Successfully created $MAC_INGEST_PATH/$folder"
|
||||
else
|
||||
echo "Failed to create $MAC_INGEST_PATH/$folder"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "$MAC_INGEST_PATH/$folder already exists."
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# Create and open NAS folders.
|
||||
create_folders_nas() {
|
||||
# Check if the parent ingest directory doesn't exist
|
||||
if [[ ! -d "$NAS_MOUNT_POINT/$NAS_INGEST_PATH" ]]; then
|
||||
echo "Creating ingest directories at $NAS_INGEST_PATH/{DNG,JPG,MP4}..."
|
||||
# Since the parent doesn't exist, we create it and all children at once
|
||||
mkdir -p "$NAS_MOUNT_POINT/$NAS_INGEST_PATH"/{DNG,JPG,MP4}
|
||||
# $? is the exit status of the last commmand, with 0 being success
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo "Success!"
|
||||
else
|
||||
echo "Failed to create directories at $NAS_MOUNT_POINT/$NAS_INGEST_PATH"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# The parent directory exists, but do the children?
|
||||
echo "Parent ingest directory already exists. Checking for subdirectories..."
|
||||
# Iterate over each folder name
|
||||
for folder in DNG JPG MP4; do
|
||||
# If the subdir doesn't exist
|
||||
if [[ ! -d "$NAS_MOUNT_POINT/$NAS_INGEST_PATH/$folder" ]]; then
|
||||
echo "Subdirectory $folder is missing, creating..."
|
||||
# Create the missing subdir
|
||||
mkdir -p "$NAS_MOUNT_POINT/$NAS_INGEST_PATH/$folder"
|
||||
# $? is the exit status of the last commmand, with 0 being success
|
||||
if [[ $? -eq 0 ]]; then
|
||||
echo "Successfully created $NAS_MOUNT_POINT/$NAS_INGEST_PATH/$folder"
|
||||
else
|
||||
echo "Failed to create $NAS_MOUNT_POINT/$NAS_INGEST_PATH/$folder"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# Cleanup non-RAW images on drone.
|
||||
clean_sd() {
|
||||
echo "Traversing to Drone..."
|
||||
cd "$SD_MOUNT_POINT$SD_SRC_PATH" || { echo "Failed to navigate to SD card path."; return 1; }
|
||||
|
||||
echo "Are you sure you want to delete all JPG, DNG, and MP4 files in $SD_MOUNT_POINT$SD_SRC_PATH? (y/N)"
|
||||
read -r confirmation
|
||||
|
||||
if [[ "$confirmation" =~ ^[Yy]$ ]]; then
|
||||
echo "Removing JPG files..."
|
||||
rm *.JPG
|
||||
|
||||
echo "Removing DNG files..."
|
||||
rm *.DNG
|
||||
|
||||
echo "Removing MP4 files..."
|
||||
rm *.MP4
|
||||
|
||||
echo "Cleanup completed!"
|
||||
else
|
||||
echo "Cleanup aborted."
|
||||
fi
|
||||
|
||||
cd - || { echo "Failed to return to the previous directory."; return 1; }
|
||||
}
|
||||
|
||||
# Drone->Mac Ingest
|
||||
ingest_mac() {
|
||||
# Check if the SD card is mounted
|
||||
if mount | grep -q $SD_MOUNT_POINT; then
|
||||
# Get the SD Card mount point, this is static though
|
||||
echo "SD Card Mounted at $SD_MOUNT_POINT."
|
||||
else
|
||||
echo "ERR: SD Card Not mounted!"
|
||||
exit 1
|
||||
fi
|
||||
create_folders_mac
|
||||
echo "Beginning copy..."
|
||||
|
||||
# Copy JPG files
|
||||
jpg_files=("$SD_MOUNT_POINT/$SD_SRC_PATH/"*.JPG)
|
||||
if [[ -f "${jpg_files[0]}" ]]; then
|
||||
echo "Copying JPGs..."
|
||||
rsync -avzc --progress "$SD_MOUNT_POINT/$SD_SRC_PATH/"*.JPG "$MAC_INGEST_PATH/JPG/"
|
||||
else
|
||||
echo "No JPGs, skipping."
|
||||
fi
|
||||
|
||||
# Copy DNG files
|
||||
arw_files=("$SD_MOUNT_POINT/$SD_SRC_PATH/"*.DNG)
|
||||
if [[ -f "${arw_files[0]}" ]]; then
|
||||
echo "Copying DNGs..."
|
||||
rsync -avzc --progress "$SD_MOUNT_POINT/$SD_SRC_PATH/"*.DNG "$MAC_INGEST_PATH/DNG/"
|
||||
else
|
||||
echo "No DNGs, skipping."
|
||||
fi
|
||||
|
||||
# Copy MP4 files
|
||||
mp4_files=("$SD_MOUNT_POINT/$SD_SRC_PATH/"*.MP4)
|
||||
if [[ -f "${mp4_files[0]}" ]]; then
|
||||
echo "Copying MP4s..."
|
||||
rsync -avzc --progress "$SD_MOUNT_POINT/$SD_SRC_PATH/"*.MP4 "$MAC_INGEST_PATH/MP4/"
|
||||
else
|
||||
echo "No MP4s, skipping."
|
||||
fi
|
||||
echo "Ingest complete!"
|
||||
open "$MAC_INGEST_PATH"
|
||||
}
|
||||
|
||||
# Mac->NAS Ingest
|
||||
ingest_nas() {
|
||||
# Check if the NAS is mounted
|
||||
if mount | grep -q "$NAS_ADDRESS"; then
|
||||
# Get the NAS mount point since it can vary
|
||||
NAS_MOUNT_POINT=$(mount | grep "$NAS_ADDRESS" | awk '{print $3}' | grep -E '^/Volumes/media(-1)?$')
|
||||
echo "NAS Mounted at $NAS_MOUNT_POINT."
|
||||
else
|
||||
echo "ERR: NAS Not mounted!"
|
||||
exit 1
|
||||
fi
|
||||
create_folders_nas
|
||||
echo "Beginning copy..."
|
||||
|
||||
# Copy JPG files
|
||||
jpg_files=("$MAC_INGEST_PATH/JPG/"*.JPG)
|
||||
if [[ -f "${jpg_files[0]}" ]]; then
|
||||
echo "Copying JPGs..."
|
||||
rsync -avzc --progress "$MAC_INGEST_PATH/JPG/"*.JPG "$NAS_MOUNT_POINT/$NAS_INGEST_PATH/JPG/"
|
||||
else
|
||||
echo "No JPGs, skipping."
|
||||
fi
|
||||
|
||||
# Copy DNG files
|
||||
arw_files=("$MAC_INGEST_PATH/DNG/"*.DNG)
|
||||
if [[ -f "${arw_files[0]}" ]]; then
|
||||
echo "Copying DNGs..."
|
||||
rsync -avzc --progress "$MAC_INGEST_PATH/DNG/"*.DNG "$NAS_MOUNT_POINT/$NAS_INGEST_PATH/DNG/"
|
||||
else
|
||||
echo "No DNGs, skipping."
|
||||
fi
|
||||
|
||||
# Copy MP4 files
|
||||
mp4_files=("$MAC_INGEST_PATH/MP4/"*.MP4)
|
||||
if [[ -f "${mp4_files[0]}" ]]; then
|
||||
echo "Copying MP4s..."
|
||||
rsync -avzc --progress "$MAC_INGEST_PATH/MP4/"*.MP4 "$NAS_MOUNT_POINT/$NAS_INGEST_PATH/MP4/"
|
||||
else
|
||||
echo "No MP4s, skipping."
|
||||
fi
|
||||
echo "Ingest complete!"
|
||||
open "$NAS_MOUNT_POINT/$NAS_INGEST_PATH"
|
||||
}
|
||||
|
||||
######################################################################################
|
||||
# Prompt Loop
|
||||
######################################################################################
|
||||
|
||||
# Bash allows for linebreaks in string literals and will
|
||||
# break lines accordingly in the shell
|
||||
while true; do
|
||||
echo ""
|
||||
echo "[ Drone Ingest Script ]"
|
||||
echo ""
|
||||
echo "Please enter an option from below:"
|
||||
echo ""
|
||||
echo "[1] Drone->Mac Ingest"
|
||||
echo "[2] Mac->NAS Ingest"
|
||||
echo "[3] Cleanup images on drone."
|
||||
echo ""
|
||||
echo "[0] Exit"
|
||||
|
||||
# Wait for input
|
||||
read -p "Option: " opt
|
||||
|
||||
# Execute the correct commands based on input.
|
||||
case "$opt" in
|
||||
1)
|
||||
# Drone->Mac Ingest
|
||||
clear
|
||||
ingest_mac
|
||||
;;
|
||||
2)
|
||||
# Mac->NAS Ingest
|
||||
clear
|
||||
ingest_nas
|
||||
;;
|
||||
3)
|
||||
# Cleanup images on drone.
|
||||
clear
|
||||
# echo "Temporarily disabled!"
|
||||
clean_sd
|
||||
;;
|
||||
0)
|
||||
# Exit the script
|
||||
echo "!! Quitting !!"
|
||||
sleep 0.8s
|
||||
clear
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
clear
|
||||
echo "!! Invalid Option !!"
|
||||
;;
|
||||
esac
|
||||
done
|
166
cam-ingest-mac.sh → ingest-mac.sh
Executable file → Normal file
166
cam-ingest-mac.sh → ingest-mac.sh
Executable file → Normal file
@ -1,45 +1,113 @@
|
||||
#!/bin/bash
|
||||
|
||||
######################################################################################
|
||||
# Name: Camera Ingest Script
|
||||
# Name: Photo/Video Ingest Script for Camera and Drone
|
||||
# Author: voidf1sh (Skylar Grant)
|
||||
# Environment: M1 MacBook Pro
|
||||
# Environment: M1 MacBook Pro, Sony a5100, DJI Mini 2
|
||||
#
|
||||
# Mounts:
|
||||
# Mounts: (Device Mount -- Volume Mount)
|
||||
# Camera SD: /dev/diskXsY (varies) -- /Volumes/NO NAME
|
||||
# Drone SD: /dev/diskXsY (varies) -- /Volumes/Untitled
|
||||
# NAS: //GUEST:@192.168.0.2/media -- /Volumes/media or /Volumes/media-1 (varies)
|
||||
#
|
||||
# Ingest Source Paths:
|
||||
# Camera SD: /DCIM/100MSDCF
|
||||
# Drone SD: /DCIM/100MEDIA
|
||||
#
|
||||
# Git: https://git.vfsh.dev/voidf1sh/custom-scripts
|
||||
# File: cam-ingest-mac.sh
|
||||
# Version: 0.0.28
|
||||
# File: ingest-mac.sh
|
||||
# Version: 0.1.1
|
||||
######################################################################################
|
||||
|
||||
# Some initial variables to work with
|
||||
# Set the date for folder creation
|
||||
CURRENT_DATE=$(date +%F)
|
||||
|
||||
# Paths
|
||||
# IMPORTANT: Paths should NEVER have trailing slashes, and ALWAYS have leading slashes
|
||||
|
||||
# Moving mount points to indices, 0=Camera Mode 1=Drone Mode
|
||||
INGEST_MODE=9 # Default to an invalid mode.
|
||||
|
||||
declare -a MODES
|
||||
MODES[0]="Camera"
|
||||
MODES[1]="Drone"
|
||||
# SD card mount point
|
||||
SD_MOUNT_POINT="/Volumes/NO NAME"
|
||||
declare -a SD_MOUNT_POINT
|
||||
SD_MOUNT_POINT[0]="/Volumes/NO NAME" # Camera
|
||||
SD_MOUNT_POINT[1]="Volumes/Untitled" # Drone
|
||||
# Camera's path to images
|
||||
SD_SRC_PATH="/DCIM/100MSDCF"
|
||||
declare -a SD_SRC_PATH
|
||||
SD_SRC_PATH[0]="/DCIM/100MSDCF" # Camera
|
||||
SD_SRC_PATH[1]="/DCIM/100MEDIA" # Drone
|
||||
# NAS Network Address
|
||||
NAS_ADDRESS="//GUEST:@192.168.0.2/media"
|
||||
|
||||
# Folder where ingests are stored on the Mac
|
||||
MAC_INGEST_FOLDER="$HOME/Pictures/Camera Ingest"
|
||||
# Where to ingest to on the Mac
|
||||
MAC_INGEST_PATH="$MAC_INGEST_FOLDER/$CURRENT_DATE"
|
||||
declare -a MAC_INGEST_FOLDER
|
||||
MAC_INGEST_FOLDER[0]="$HOME/Pictures/Camera Ingest" # Camera
|
||||
MAC_INGEST_FOLDER[1]="$HOME/Pictures/Drone Ingest" # Drone
|
||||
# Folder where ingests are stored on the NAS
|
||||
NAS_INGEST_FOLDER="/Camera Ingest"
|
||||
# Where to ingest to on the NAS
|
||||
NAS_INGEST_PATH="$NAS_INGEST_FOLDER/$CURRENT_DATE"
|
||||
declare -a NAS_INGEST_FOLDER
|
||||
NAS_INGEST_FOLDER[0]="/Camera Ingest"
|
||||
NAS_INGEST_FOLDER[1]="/Drone Ingest"
|
||||
|
||||
######################################################################################
|
||||
# Functions
|
||||
######################################################################################
|
||||
|
||||
# Set mode configuration
|
||||
set_mode() {
|
||||
INGEST_MODE=$1
|
||||
# Where to ingest to on the Mac
|
||||
MAC_INGEST_PATH="${MAC_INGEST_FOLDER[$INGEST_MODE]}/$CURRENT_DATE"
|
||||
# Where to ingest to on the NAS
|
||||
NAS_INGEST_PATH="${NAS_INGEST_FOLDER[$INGEST_MODE]}/$CURRENT_DATE"
|
||||
echo "Ingest mode set to ${MODES[$INGEST_MODE]} [$INGEST_MODE]"
|
||||
}
|
||||
|
||||
# Mode Prompt
|
||||
mode_prompt() {
|
||||
# Print the selection prompt
|
||||
echo "[ Photo/Video Ingest Script ]"
|
||||
echo ""
|
||||
echo "Please select an ingest mode:"
|
||||
echo ""
|
||||
echo "[1] Camera"
|
||||
echo "[2] Drone"
|
||||
echo ""
|
||||
echo "[0] Exit"
|
||||
|
||||
# Wait for input
|
||||
read -p "Mode: " mode
|
||||
|
||||
# Execute the correct commands based on input.
|
||||
case "$mode" in
|
||||
1)
|
||||
# Camera Mode
|
||||
clear
|
||||
set_mode 0
|
||||
;;
|
||||
2)
|
||||
# Drone Mode
|
||||
clear
|
||||
set_mode 1
|
||||
;;
|
||||
0)
|
||||
# Exit the script
|
||||
echo "!! Quitting !!"
|
||||
sleep 0.8s
|
||||
clear
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
clear
|
||||
echo "!! Invalid Option !!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Create and open Mac folders.
|
||||
create_folders_mac() {
|
||||
# Check if the parent ingest directory doesn't exist
|
||||
@ -149,15 +217,6 @@ clean_sd() {
|
||||
|
||||
# Camera->Mac Ingest
|
||||
ingest_mac() {
|
||||
# Check if the SD card is mounted
|
||||
if mount | grep -q "/Volumes/NO NAME"; then
|
||||
# Get the SD Card mount point, this is static though
|
||||
SD_MOUNT_POINT="/Volumes/NO NAME"
|
||||
echo "SD Card Mounted at $SD_MOUNT_POINT."
|
||||
else
|
||||
echo "ERR: SD Card Not mounted!"
|
||||
exit 1
|
||||
fi
|
||||
create_folders_mac
|
||||
echo "Beginning copy..."
|
||||
|
||||
@ -193,15 +252,6 @@ ingest_mac() {
|
||||
|
||||
# Mac->NAS Ingest
|
||||
ingest_nas() {
|
||||
# Check if the NAS is mounted
|
||||
if mount | grep -q "$NAS_ADDRESS"; then
|
||||
# Get the NAS mount point since it can vary
|
||||
NAS_MOUNT_POINT=$(mount | grep "$NAS_ADDRESS" | awk '{print $3}' | grep -E '^/Volumes/media(-1)?$')
|
||||
echo "NAS Mounted at $NAS_MOUNT_POINT."
|
||||
else
|
||||
echo "ERR: NAS Not mounted!"
|
||||
exit 1
|
||||
fi
|
||||
create_folders_nas
|
||||
echo "Beginning copy..."
|
||||
echo "Syncing ingested images with NAS..."
|
||||
@ -238,6 +288,36 @@ ingest_nas() {
|
||||
open "$NAS_MOUNT_POINT/$NAS_INGEST_PATH"
|
||||
}
|
||||
|
||||
######################################################################################
|
||||
# Check for Connections
|
||||
######################################################################################
|
||||
|
||||
# Check if the SD card is mounted
|
||||
if mount | grep -q "${SD_MOUNT_POINT[$INGEST_MODE]}"; then
|
||||
echo "SD Card Mounted at $SD_MOUNT_POINT."
|
||||
else
|
||||
echo "ERR: SD Card Not mounted!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if the NAS is mounted
|
||||
if mount | grep -q "$NAS_ADDRESS"; then
|
||||
# Get the NAS mount point since it can vary
|
||||
NAS_MOUNT_POINT=$(mount | grep "$NAS_ADDRESS" | awk '{print $3}' | grep -E '^/Volumes/media(-1)?$')
|
||||
echo "NAS Mounted at $NAS_MOUNT_POINT."
|
||||
else
|
||||
echo "ERR: NAS Not mounted!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
######################################################################################
|
||||
# Mode Prompt
|
||||
######################################################################################
|
||||
|
||||
# Empty the screen
|
||||
clear
|
||||
mode_prompt
|
||||
|
||||
######################################################################################
|
||||
# Prompt Loop
|
||||
######################################################################################
|
||||
@ -245,14 +325,21 @@ ingest_nas() {
|
||||
# Bash allows for linebreaks in string literals and will
|
||||
# break lines accordingly in the shell
|
||||
while true; do
|
||||
echo ""
|
||||
echo "[ Camera Ingest Script ]"
|
||||
# Empty the screen
|
||||
clear
|
||||
# Print the prompt
|
||||
echo "[ Photo/Video Ingest Script ]"
|
||||
echo "Mode: ${MODES[$INGEST_MODE]}"
|
||||
echo "Ingest Source Path: ${SD_MOUNT_POINT[$INGEST_MODE]}${SD_SRC_PATH[$INGEST_MODE]}"
|
||||
echo "Mac Ingest Path: $MAC_INGEST_PATH"
|
||||
echo "NAS Ingest Path: $NAS_INGEST_PATH"
|
||||
echo ""
|
||||
echo "Please enter an option from below:"
|
||||
echo ""
|
||||
echo "[1] Camera->Mac Ingest"
|
||||
echo "[1] SD->Mac Ingest"
|
||||
echo "[2] Mac->NAS Ingest"
|
||||
echo "[3] Cleanup non-RAW images on camera."
|
||||
echo "[3] !! Delete ALL images on SD card!!"
|
||||
echo "[4] Change ingest mode"
|
||||
echo ""
|
||||
echo "[0] Exit"
|
||||
|
||||
@ -262,7 +349,7 @@ while true; do
|
||||
# Execute the correct commands based on input.
|
||||
case "$opt" in
|
||||
1)
|
||||
# Camera->Mac Ingest
|
||||
# SD->Mac Ingest
|
||||
clear
|
||||
ingest_mac
|
||||
;;
|
||||
@ -272,11 +359,14 @@ while true; do
|
||||
ingest_nas
|
||||
;;
|
||||
3)
|
||||
# Cleanup non-RAW images on camera.
|
||||
# !! Delete ALL images on SD card!!
|
||||
clear
|
||||
# echo "Temporarily disabled!"
|
||||
clean_sd
|
||||
;;
|
||||
4)
|
||||
# Change ingest mode
|
||||
clear
|
||||
mode_prompt;;
|
||||
0)
|
||||
# Exit the script
|
||||
echo "!! Quitting !!"
|
Loading…
Reference in New Issue
Block a user