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