X-Git-Url: http://git.pippins.net/embedvideo/.git/?a=blobdiff_plain;f=rip_dvd;h=8a8c2fa072287fc0371adb4ed29d70a5c0e6e03d;hb=refs%2Fheads%2Fmaster;hp=24d881e73dbbf9b19746e678fe990a01c01ee733;hpb=d3d69604ce4a320b1f6c4a057e96bf1a5a5048a0;p=rip_dvd%2F.git diff --git a/rip_dvd b/rip_dvd index 24d881e..8a8c2fa 100755 --- a/rip_dvd +++ b/rip_dvd @@ -48,6 +48,7 @@ typeset mkvpropedit="" typeset mkvmerge="" typeset mp4box="" typeset dvdxchap="" +typeset eject_opts="-T" typeset -i default_aid=128 typeset -i aid_override=-1 typeset -i force_onepass_mode=0 @@ -78,6 +79,7 @@ typeset -i custom_audio_2ch=0 typeset -i custom_audio_6ch=0 typeset -i minimum_feature_title_length=60 typeset -i lsdvd_timeout=10 +typeset -i makemkv_copy_largest_title_only=1 ############################################################################## # Local Machine Settings: @@ -336,9 +338,18 @@ if [ -z "$dvdname" ]; then echo "-E- Can't access the DVD device $dev" exit 1 fi + # now capture the volume name from the device dvdname=`volname $dev | awk '{ print $1 }'` ripdvd=1 + + # if the dvdname is still blank, go about it a different way (for BluRays) + if [[ -z "$dvdname" ]]; then + echo "-> Using makemkv to obtain disk label" + dvdname=`$makemkv info --noscan --robot disc:$makemkv_disc_id | grep "CINFO:2," | awk -F "," '{ print $3; }' | tr ' ' '_' | sed 's/\"//g'` + echo " Found disk label: $dvdname" + ripdvd=1 + fi else @@ -1121,7 +1132,7 @@ function make_dvd_mkv_image { dstdir=${dstmkv%.[^.]*} ((min_length = minimum_feature_title_length * 60)) - echo -e "\n Ripping: $makemkv --minlength=$min_length --decrypt --progress=-same $srctype:$srcname all $dstdir" + echo -e "\n Ripping: $makemkv mkv --minlength=$min_length --decrypt --progress=-same $srctype:$srcname all $dstdir" mkdir -p "$dstdir" $makemkv mkv --minlength=$min_length --decrypt --progress=-same $srctype:$srcname all $dstdir 2>&1 | tee -a "$ddrescuelog" makemkv_retval=$? @@ -1130,22 +1141,33 @@ function make_dvd_mkv_image { fatal_and_exit "-E- Unhandled makemkv error" fi - # Move the largest created MKV file into place - # There might be multiple ones, so just grab the largest one - largest_mkv_file=`/bin/ls -1S "$dstdir"/*.mkv | head -1` - echo -e "\n Moving largest mkv file $largest_mkv_file -> $dstmkv\n" | tee -a "$ddrescuelog" - mv "$largest_mkv_file" "$dstmkv" - - # Move all of the created MKV file into place - #echo "\n" | tee -a "$ddrescuelog" - #dstfile=${dstmkv%.[^.]*} - #typeset -i num=0 - #for i in `/bin/ls -1 "$dstdir"/*.mkv`; do - #echo -e " Moving $i -> $dstfile.$num.mkv" | tee -a "$ddrescuelog" - #mv "$i" "$dstfile.$num.mkv" - #((num = num + 1 )) - #done - #echo "\n" | tee -a "$ddrescuelog" + if [ $makemkv_copy_largest_title_only -eq 1 ]; then + # Move the largest created MKV file to destination + # There might be multiple ones, so just grab the largest one + largest_mkv_file=`/bin/ls -1S "$dstdir"/*.mkv | head -1` + echo -e "\n Moving largest mkv file $largest_mkv_file -> $dstmkv\n" | tee -a "$ddrescuelog" + mv "$largest_mkv_file" "$dstmkv" + else + # Move all of the created MKV files to destination + echo "\n" | tee -a "$ddrescuelog" + dstfile=${dstmkv%.[^.]*} + typeset -i num=0 + typeset -i titles=0 + for i in `/bin/ls -1 "$dstdir"/*.mkv`; do + ((titles = titles + 1)) + done + if [[ $titles > 1 ]]; then + for i in `/bin/ls -1 "$dstdir"/*.mkv`; do + echo -e " Moving $i -> $dstfile.$num.mkv" | tee -a "$ddrescuelog" + mv "$i" "$dstfile.$num.mkv" + ((num = num + 1 )) + done + else + echo -e " Moving $dstdir/*.mkv -> $dstfile.mkv" | tee -a "$ddrescuelog" + mv "$dstdir"/*.mkv "$dstfile.mkv" + fi + echo "\n" | tee -a "$ddrescuelog" + fi if [ $? != 0 ]; then fatal_and_exit "-E- Unhandled mv error" @@ -1823,14 +1845,27 @@ if [ $mirror_mode -eq 1 ]; then if [[ "$ripper" == "makemkv" ]]; then # use makemkv to make an MKV file of the disk make_dvd_mkv_image "$tmpdir/$dvdname.mkv" "disc" "$makemkv_disc_id" - echo " Moving $tmpdir/$dvdname.mkv -> $dest/$dvdname.mkv" - mv "$tmpdir/$dvdname.mkv" "$dest/$dvdname.mkv" + # move the ripped movies into place + typeset -i num=0 + for i in `/bin/ls -1 "$tmpdir/$dvdname"*.mkv`; do + if [[ "$i" =~ .[[:digit:]].mkv ]]; then + finaldest="$dest/$dvdname.$num.mkv" + else + finaldest="$dest/$dvdname.mkv" + fi + while [[ -e "$finaldest" ]]; do + ((num = num + 1 )) + finaldest="$dest/$dvdname.$num.mkv" + done + echo " Moving $i -> $finaldest" + mv "$i" "$finaldest" + done # add this video data to the mythtv DB fill_mythvideo_metadata "$dest_filename" else # use ddrescue to make an ISO image of the disk make_dvd_iso_image "$tmpdir/$dvdname.iso" - echo " Moving $tmpdir/$dvdname.mkv -> $dest/$dvdname.mkv" + echo " Moving $tmpdir/$dvdname.iso -> $dest/$dvdname.iso" mv "$tmpdir/$dvdname.iso" "$dest/$dvdname.iso" # add this video data to the mythtv DB fill_mythvideo_metadata "$dest_filename" @@ -1838,7 +1873,7 @@ if [ $mirror_mode -eq 1 ]; then # eject the disk upon completion if [ $eject_disk -ne 0 ]; then - eject -T $dev + eject $eject_opts $dev fi date=`date` @@ -1958,7 +1993,7 @@ if [ $mirror_mode -eq 0 ]; then fi # eject the DVD disk since we are finished with it - [ $eject_disk -eq 2 ] && eject -T $dev + [ $eject_disk -eq 2 ] && eject $eject_opts $dev # encode the VOB file to a compressed file format if [ $make_final_dest_comp -eq 1 ]; then @@ -2044,7 +2079,7 @@ if [ $mirror_mode -eq 0 ]; then remove_intermediate_dvdbackup_folder # eject the DVD disk upon completion - [ $eject_disk -eq 1 ] && eject -T $dev + [ $eject_disk -eq 1 ] && eject $eject_opts $dev date=`date` echo "$date DVD rip completed" | tee -a "$logfile"