Merge branch 'master' of git.distorted.org.uk:~mdw/publish/public-git/dvdrip
[dvdrip] / dvdrip-retry-botched-vobs
1 #! /bin/sh -e
2
3 dev=${DVDRIP_DEVICE-/dev/dvd}
4 : ${DVD_SECTOR_COPY=dvd-sector-copy}
5 : ${DVD_CHECK_KEYS=dvd-check-keys}
6
7 find "$@" -type f -name "*.retry" -print | sort | while IFS= read -r r; do
8 iso=${r%.retry}.iso
9
10 want_id=$(dvd-id "$iso")
11 last_wrong=nil
12 echo "Insert $iso..."
13 while :; do
14 id=$(dvd-id "$dev")
15 case $id in
16 "$want_id") break ;;
17 "$last_wrong") ;;
18 *)
19 echo "No, that's $id -- wanted $want_id..."
20 last_wrong=$id
21 eject "$dev"
22 ;;
23 esac
24 sleep 2
25 done
26
27 for try in 3 2 1 0; do
28 "$DVD_SECTOR_COPY" -R"$r" "$dev" "$iso"
29
30 set +e; DVDCSS_CACHE=off "$DVD_CHECK_KEYS" -b"$r.new" "$dev"; rc=$?; set -e
31 case $rc,$try in
32 0,*) rm -f "$r"; break ;;
33 1,0) echo "Giving up :-("; mv "$r.new" "$r"; break ;;
34 1,*) echo "Still broken! Let's try again..."; mv "$r.new" "$r"; ;;
35 *) echo "Failed! :-("; exit 2 ;;
36 esac
37 done
38 eject "$dev"
39 done