Initial Commit
This commit is contained in:
74
hanbrake-batch-converteer.sh
Executable file
74
hanbrake-batch-converteer.sh
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
|
||||
# === Default settings ===
|
||||
HANDBRAKE_CLI="/usr/bin/HandBrakeCLI"
|
||||
LOG_FILE="./handbrake_convert.log"
|
||||
|
||||
# === Read parameters ===
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--source)
|
||||
SOURCE_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
--destination)
|
||||
DEST_DIR="$2"
|
||||
shift 2
|
||||
;;
|
||||
--mode)
|
||||
MODE="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown parameter: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# === Check required parameters ===
|
||||
if [[ -z "$SOURCE_DIR" || -z "$DEST_DIR" || -z "$MODE" ]]; then
|
||||
echo "Usage: $0 --source /path/to/source --destination /path/to/destination --mode [bluray|dvd]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# === Set presets based on mode ===
|
||||
case "$MODE" in
|
||||
bluray)
|
||||
PRESET_FILE="./profiles/BluRay H.265 HEVC.json"
|
||||
PRESET_NAME="BluRay H.265 HEVC"
|
||||
;;
|
||||
dvd)
|
||||
PRESET_FILE="./profiles/DVD 720p H.265.json"
|
||||
PRESET_NAME="DVD 720p H.265"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid mode: $MODE (allowed: bluray, dvd)"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# === Recursively find all MKV files ===
|
||||
find "$SOURCE_DIR" -type f -name "*.mkv" | while read -r input_file; do
|
||||
# Get relative path
|
||||
rel_path="${input_file#$SOURCE_DIR/}"
|
||||
rel_dir="$(dirname "$rel_path")"
|
||||
|
||||
# Create matching directory structure in destination
|
||||
mkdir -p "$DEST_DIR/$rel_dir"
|
||||
|
||||
base_name="$(basename "$input_file" .mkv)"
|
||||
output_file="$DEST_DIR/$rel_dir/$base_name.mkv"
|
||||
|
||||
# Convert if output does not exist
|
||||
if [ ! -f "$output_file" ]; then
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S") - Converting: $rel_path" >> "$LOG_FILE"
|
||||
"$HANDBRAKE_CLI" -i "$input_file" -o "$output_file" \
|
||||
--preset-import-file "$PRESET_FILE" --preset "$PRESET_NAME" >> "$LOG_FILE" 2>&1
|
||||
else
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S") - Skipped (already exists): $rel_path" >> "$LOG_FILE"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$(date +"%Y-%m-%d %H:%M:%S") - Finished!" >> "$LOG_FILE"
|
||||
|
||||
Reference in New Issue
Block a user