here is what i have prepared so far for my own automatic #dvd #ripping setup to use instead of the dogshit automaticrippingmachine scripts:
UDEV Rule:
# /etc/udev/rules.d/85-auto-rip.rules
ACTION=="change", SUBSYSTEM=="block", KERNEL=="sr[0-9]*", ENV{DISK_MEDIA_CHANGE}=="1", RUN+="/usr/local/bin/auto-iso-rip.sh"
UDEV Trigger Script
# /usr/local/bin/auto-iso-rip.sh
#!/bin/bash
LOG="/var/log/optical_insert.log"
{
echo "==== Optical disc inserted ===="
echo "Date: $(date)"
echo "DEVNAME=$DEVNAME"
echo "DEVPATH=$DEVPATH"
echo "ID_CDROM_MEDIA=$ID_CDROM_MEDIA"
echo "ID_CDROM_MEDIA_DVD=$ID_CDROM_MEDIA_DVD"
echo "ID_FS_TYPE=$ID_FS_TYPE"
echo
DEVICE="$DEVNAME"
[ -z "$DEVICE" ] && exit 1
if [ "$ID_CDROM_MEDIA_DVD" = "1" ]; then
/bin/bash /usr/local/bin/copyiso.sh "$DEVICE" &
fi
} >> "$LOG"
ISO Ripping Script
# /usr/local/bin/copyiso.sh
set -e
OUTPUT_DIR="${HOME}/DVD_Backups"
LOG_FILE="${HOME}/auto-iso.log"
MAX_RETRIES=3
DEVICE="$1"
[ -z "$DEVICE" ] && exit 1
{
echo "=== Checking Disk Type on $DEVICE ==="
DVD_CHECK=$(udevadm info -q property -n "$DEVICE" | grep -c "ID_CDROM_MEDIA_DVD=1")
[ "$DVD_CHECK" -eq 0 ] && exit 0
DISC_TITLE=`makemkvcon -r info disc:0 2>/dev/null | grep -oP 'DRV:0,\d+,\d+,\d+,"[^"]+",".+",".+"'`
[ -z "$DISC_TITLE" ] && DISC_TITLE="\"Unknown_DVD\""
CLEAN_TITLE=$(echo "$DISC_TITLE" | cut -d, -f6 | awk '{print substr($0, 2, length($0)-2)}')
ISO_FILE="${OUTPUT_DIR}/${CLEAN_TITLE}_$(date +%Y%m%d_%H%M%S).iso"
LOG_FILE_ISO="${OUTPUT_DIR}/${CLEAN_TITLE}_$(date +%Y%m%d_%H%M%S)_ddrescue.log"
echo "Title: $CLEAN_TITLE"
echo "ISO Filename: $ISO_FILE"
echo "Log Filename: $LOG_FILE_ISO"
mkdir -p "$OUTPUT_DIR"
if [ -f "$ISO_FILE" ]; then
echo "ISO already exists: $ISO_FILE"
else
echo "Creating ISO: $ISO_FILE"
ddrescue -d -n -b 2048 -c 1 -r "$MAX_RETRIES" -v "$DEVICE" "$ISO_FILE" "$LOG_FILE_ISO"
if grep -q "errors:" "$LOG_FILE_ISO"; then
ddrescue -d -b 2048 -c 1 -r "$MAX_RETRIES" -v "$DEVICE" "$ISO_FILE" "$LOG_FILE_ISO"
fi
echo "ISO created: $(stat -c%s "$ISO_FILE") bytes"
fi
eject "$DEVICE"
echo "Disc ejected"
} >> $LOG_FILE
and now i will work on the makemkv automation, and then will work on the ffmpeg/handbrake automation.