Squashed commit of the following:

commit 2986b3cfdc487f71aa7808501da0196c93679596
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 21:53:22 2016 -0800

    merge changes

commit c2a5d54f2edbe16ebb4df67c62cce97b2f1e3c4c
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 21:18:43 2016 -0800

    fix bad var

commit a96af91a2ab0d8c87dd3dc06466203c7efdf2cef
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 21:05:00 2016 -0800

    logging comment

commit 4e2ce38520dee4221bf99070083b740a07947115
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 21:04:00 2016 -0800

    add timestamp in raw folder

commit bb4f003fc44a117edadb178594ffbadd20edc81c
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 20:49:22 2016 -0800

    check to see if title exists, if so no timestamp

commit 1cbea6a4df7993f4d6cdc2714b9689e2666e2fc7
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 20:01:32 2016 -0800

    open in binary mode

commit 8362d893af625043e6e0429c68065efddc9dd46c
Author: Benjamin Bryan <ben@b3n.org>
Date:   Wed Nov 23 20:00:54 2016 -0800

    quote path

commit 9ff73d21e2f24238fb8de83ccc2def9c64612dca
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 22:42:33 2016 -0800

    esc quotes

commit c55ce810f6f9c7a4b3276e0dc801bd51d0f172a4
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 22:40:27 2016 -0800

    debug

commit 6b9eecba196a4a80e234ebf5fb1c1106986a5f4a
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 22:19:23 2016 -0800

    this probably shouldn't be different

commit 6ca6b73636703ce06d6f0088ad77dddc7443fef6
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 22:15:56 2016 -0800

    spaces....

commit 9eda76899194d9a49168926195d85319ac8991a5
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 21:54:40 2016 -0800

    quotes

commit 39a658582d12a1fbe61c69b1ad9be30591facfe0
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 21:36:03 2016 -0800

    more debugging

commit 9593c43cc28330876d63530127f650bdeb3cb0de
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 21:30:16 2016 -0800

    cleanup string

commit 5caf6e7c19be47aa9bd0ead476680296305a6cd0
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 21:01:19 2016 -0800

    debug

commit 42faee7ff9cbf3ac23eda55b37cd1d986e9ceff4
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 20:56:39 2016 -0800

    spaces

commit d04a114e7e509538b3aff660a380a72b5c1bc88f
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 20:50:27 2016 -0800

    video title

commit cdb955f8af9d330e2b61494c41c5378929153684
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 20:25:00 2016 -0800

    fix bash errors

commit 7b36271630b15175b9d3bee2a145f9ce7d01f766
Author: Benjamin Bryan <ben@b3n.org>
Date:   Tue Nov 22 20:05:12 2016 -0800

    fix transcoding call

commit f674c812fc417f217fc5c46102b499371cf622df
Merge: c428b57 462e766
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 22:54:15 2016 -0800

    Merge branch 'identifydvdbluraytitle' of github.com:ahnooie/automatic-ripping-machine into identifydvdbluraytitle

commit c428b57d66f1ef4d55d36677fb23f30e71a1cfc6
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 22:53:59 2016 -0800

    force python3 for now

commit 462e766c6fbf2d962eeb922c83285f4e8528939d
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 22:53:41 2016 -0800

    fix path

commit 797f32bf500ac62af0ab928001b543cd5ec891d0
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 22:39:11 2016 -0800

    param devname

commit 91f90d707cb01671da9fffe9e3a740ae6e783d26
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 22:38:29 2016 -0800

    get video title

commit 51cdb4085980669ae46b41378f579c434165d32e
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 21:45:36 2016 -0800

    fix bluray replace and fix type error for python3

commit 3e214abe2ec72e497d97ed896de3f307dc83d3e6
Author: Benjamin Bryan <ben@b3n.org>
Date:   Mon Nov 21 21:19:59 2016 -0800

    Rip option using backup method in MakeMKV and main-feature in HandBrake (#6) (#8)

    * Add ability to rip using backup method in MakeMKV and main-feature in Handbrake
    * Added logic for when backup method is selected but all files wanted.

commit f3a9da4e0ae07cf6a123cbe9f9b05d607005164c
Author: Benjamin Bryan <ben@b3n.org>
Date:   Sun Nov 20 07:49:55 2016 -0800

    desc

commit f2a423d4eb7c39eae206086a6612816eaa714213
Author: Benjamin Bryan <ben@b3n.org>
Date:   Sun Nov 20 07:48:44 2016 -0800

    clean up

commit 5466d33e24cd82d3d608eb63779b4a8fed1b221f
Author: Benjamin Bryan <ben@b3n.org>
Date:   Sat Nov 19 21:27:43 2016 -0800

    added bluray

commit dd06df5dde9f90dee67399fff6592e530180e6fd
Author: Benjamin Bryan <ben@b3n.org>
Date:   Sat Nov 19 19:45:19 2016 -0800

    parse xml

commit 91fb6fc68f1faea19690b56090b40b5ed3e9e3ca
Author: Benjamin Bryan <ben@b3n.org>
Date:   Sat Nov 19 19:00:32 2016 -0800

    get crc64 of dvd

# Conflicts:
#	video_rip.sh
#	video_transcode.sh
This commit is contained in:
Benjamin Bryan
2016-11-23 22:03:28 -08:00
parent 4c57df2672
commit 5e8b35fc17
5 changed files with 173 additions and 9 deletions

View File

@@ -8,6 +8,10 @@
# Distinguish UDF video discs from UDF data discs. Requires mounting disc so adds a few seconds to the identify script.
ARM_CHECK_UDF=true
# When enabled if the disc is a DVD use dvdid to calculate a crc64 and query Windows Media Meta Services for the Movie Title.
# For BluRays attempts to extract the title from an XML file on the disc
GET_VIDEO_TITLE=false
#####################
## Directory setup ##

70
getmovietitle.py Executable file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/python3
import argparse
import urllib
import os
import datetime
import pydvdid
import unicodedata
import xmltodict
import sys
import re
def entry():
""" Entry to program, parses arguments"""
parser = argparse.ArgumentParser(description='Get Movie Title from DVD or Blu-Ray')
parser.add_argument('-p', '--path', help='Mount path to disc', required=True)
return parser.parse_args()
def getdvdtitle():
""" Calculates CRC64 for the DVD and calls Windows Media
Metaservices and returns the Title and year of DVD """
crc64 = pydvdid.compute(args.path)
# print (crc64)
dvd_info_xml = urllib.request.urlopen(
"http://metaservices.windowsmedia.com/pas_dvd_B/template/GetMDRDVDByCRC.xml?CRC={0}".
format(crc64)).read()
doc = xmltodict.parse(dvd_info_xml)
dvd_title = doc['METADATA']['MDR-DVD']['dvdTitle']
dvd_release_date = doc['METADATA']['MDR-DVD']['releaseDate']
# title + release year
return dvd_title + " (" + dvd_release_date.split()[0] + ")"
def getbluraytitle():
""" Get's Blu-Ray title by parsing XML in bdmt_eng.xml """
with open(args.path + '/BDMV/META/DL/bdmt_eng.xml', "rb") as xml_file:
doc = xmltodict.parse(xml_file.read())
bluray_title = doc['disclib']['di:discinfo']['di:title']['di:name']
bluray_modified_timestamp = os.path.getmtime(args.path + '/BDMV/META/DL/bdmt_eng.xml')
bluray_year = (datetime.datetime.fromtimestamp(bluray_modified_timestamp).strftime('%Y'))
bluray_title = unicodedata.normalize('NFKD', bluray_title).encode('ascii', 'ignore').decode()
bluray_title = bluray_title.replace(' - Blu-rayTM', '')
bluray_title = bluray_title.replace(' - Blu-ray', '')
return bluray_title + " (" + bluray_year + ")"
def clean_for_filename(string):
""" Cleans up string for use in filename """
string = string.replace(' : ',' - ')
string = string.replace(': ',' - ')
return re.sub('[^\w\-_\.\(\) ]', '', string)
#pylint: disable=C0103
args = entry()
try:
disc_title = clean_for_filename(getdvdtitle())
except:
disc_title = clean_for_filename(getbluraytitle())
print(disc_title)
else:
print(disc_title)

View File

@@ -8,6 +8,9 @@ mkdir -p $LOGPATH
{
echo "Starting Identify Script..." >> $LOG
VIDEO_TITLE=""
HAS_NICE_TITLE=""
#Clean up old log files
FILESFOUND=( $(find $LOGPATH -mtime +$LOGLIFE -type f))
@@ -30,8 +33,31 @@ if [ $ID_FS_TYPE == "udf" ]; then
mount ${DEVNAME} /mnt/${DEVNAME}
if [[ -d /mnt/${DEVNAME}/VIDEO_TS || -d /mnt/${DEVNAME}/BDMV ]]; then
echo "identified udf as video" >> $LOG
if [ $GET_VIDEO_TITLE == true ]; then
GET_TITLE_OUTPUT=$(/opt/arm/getmovietitle.py -p "/mnt${DEVNAME}" 2>&1)
GET_TITLE_RESULT=$?
if [ $GET_TITLE_RESULT = 0 ]; then
echo "Obtained Title $GET_TITLE_OUTPUT"
HAS_NICE_TITLE=true
VIDEO_TITLE=${GET_TITLE_OUTPUT}
else
echo "failed to get title $GET_TITLE_OUTPUT"
HAS_NICE_TITLE=false
VIDEO_TITLE=${ID_FS_LABEL}
fi
else
HAS_NICE_TITLE=false
VIDEO_TITLE=${ID_FS_LABEL}
fi
echo "got to here"
echo "video title is now ${VIDEO_TITLE}"
umount /mnt/${DEVNAME}
/opt/arm/video_rip.sh $LOG
/opt/arm/video_rip.sh "$VIDEO_TITLE" "$HAS_NICE_TITLE" $LOG
else
umount /mnt/${DEVNAME}
echo "identified udf as data" >> $LOG

View File

@@ -4,13 +4,35 @@
source /opt/arm/config
VIDEO_TITLE=$1
HAS_NICE_TITLE=$2
{
echo "Ripping video ${ID_FS_LABEL} from ${DEVNAME}" >> $LOG
echo "Video Title is ${VIDEO_TITLE}"
echo "Ripping video ${ID_FS_LABEL} from ${DEVNAME}" >> $LOG
TIMESTAMP=`date '+%Y%m%d_%H%M%S'`;
DEST=${RAWPATH}/${ID_FS_LABEL}_${TIMESTAMP}
DEST=${RAWPATH}/${VIDEO_TITLE}_${TIMESTAMP}
RIPSTART=$(date +%s);
mkdir $DEST
echo /opt/arm/video_transcode.sh \"$DEST\" \"$VIDEO_TITLE\" $TIMESTAMP >> $LOG
if [ $RIPMETHOD = "backup" ] && [ $ID_CDROM_MEDIA_BD = "1" ]; then
echo "Using backup method of ripping." >> $LOG
DISC="${DEVNAME: -1}"
echo "Sending command: "makemkvcon backup --decrypt -r disc:$DISC $DEST/""
makemkvcon backup --decrypt -r disc:$DISC $DEST/
eject $DEVNAME
elif [ $MAINFEATURE = true ] && [ $ID_CDROM_MEDIA_DVD = "1" ] && [ -z $ID_CDROM_MEDIA_BD ]; then
echo "Media is DVD and Main Feature parameter in config file is true. Bypassing MakeMKV." >> $LOG
echo "DEST is ${DEST}"
else
echo "Using mkv method of ripping." >> $LOG
makemkvcon mkv dev:$DEVNAME all $DEST --minlength=$MINLENGTH -r
eject $DEVNAME
fi
mkdir "$DEST"
if [ $RIPMETHOD = "backup" ] && [ $ID_CDROM_MEDIA_BD = "1" ]; then
echo "Using backup method of ripping." >> $LOG
@@ -23,7 +45,7 @@ source /opt/arm/config
else
echo "Using mkv method of ripping." >> $LOG
makemkvcon mkv dev:$DEVNAME all $DEST --minlength=$MINLENGTH -r
makemkvcon mkv dev:$DEVNAME all "$DEST" --minlength=$MINLENGTH -r
eject $DEVNAME
fi
@@ -36,7 +58,9 @@ source /opt/arm/config
echo /opt/arm/notify.sh "\"Ripped: ${ID_FS_LABEL} completed from ${DEVNAME} in ${RIPTIME}\"" |at now
echo "STAT: ${ID_FS_LABEL} ripped in ${RIPTIME}" >> $LOG
echo /opt/arm/video_transcode.sh $DEST $ID_FS_LABEL $TIMESTAMP | batch
echo /opt/arm/video_transcode.sh \"$DEST\" \"$VIDEO_TITLE\" \"$HAS_NICE_TITLE\" $TIMESTAMP >> $LOG
echo /opt/arm/video_transcode.sh \"$DEST\" \"$VIDEO_TITLE\" \"$HAS_NICE_TITLE\" $TIMESTAMP | batch
echo "${ID_FS_LABEL} sent to transcoding queue..." >> $LOG

View File

@@ -5,15 +5,26 @@ source /opt/arm/config
SRC=$1
LABEL=$2
TIMESTAMP=$3
HAS_NICE_TITLE=$3
TIMESTAMP=$4
TRANSSTART=$(date +%s);
echo "Start video transcoding script" >> $LOG
DEST=${ARMPATH}/${LABEL}_${TIMESTAMP}
mkdir $DEST
if [ "$HAS_NICE_TITLE" = true ]; then
echo "transcoding with a nice title"
DEST="${ARMPATH}/${LABEL}"
if [ -d "$DEST" ]; then
echo "directory already exists... adding timestamp"
DEST="${ARMPATH}/${LABEL}_${TIMESTAMP}"
fi
else
echo "transcoding without a nice title"
DEST="${ARMPATH}/${LABEL}_${TIMESTAMP}"
fi
mkdir "$DEST"
if [ $RIPMETHOD = "backup" ] && [ "$MAINFEATURE" = true ] && [ $ID_CDROM_MEDIA_BD = "1" ]; then
echo "Transcoding BluRay main feature only." >> $LOG
$HANDBRAKE_CLI -i $SRC -o $DEST/$LABEL.$DEST_EXT --main-feature --preset="$HB_PRESET" --subtitle scan -F 2>> $LOG
@@ -36,13 +47,42 @@ echo "Start video transcoding script" >> $LOG
filename=${filename%.*}
echo "Transcoding file $FILE" >> $LOG
if [ $RIPMETHOD = "backup" ] && [ "$MAINFEATURE" = true ] && [ $ID_CDROM_MEDIA_BD = "1" ]; then
echo "Transcoding BluRay main feature only." >> $LOG
<<<<<<< HEAD
$HANDBRAKE_CLI -i "$SRC" -o "$DEST/$LABEL.$DEST_EXT" --main-feature --preset="$HB_PRESET" --subtitle scan -F 2>> $LOG
rmdir -rf "$SRC"
elif [ $RIPMETHOD = "backup" ] && [ "$MAINFEATURE" = false ] && [ $ID_CDROM_MEDIA_BD = "1" ]; then
echo "Transcoding BluRay all titles above minlength." >> $LOG
$HANDBRAKE_CLI -i "$SRC" -o "$DEST/$LABEL.$DEST_EXT" --min-duration $MINLENGTH --preset="$HB_PRESET" --subtitle scan -F 2>> $LOG
rmdir -rf "$SRC"
elif [ $MAINFEATURE = true ] && [ $ID_CDROM_MEDIA_DVD = "1" ]; then
echo "Transcoding DVD main feature only." >> $LOG
$HANDBRAKE_CLI -i $DEVNAME -o "$DEST/$LABEL.$DEST_EXT" --main-feature --preset="$HB_PRESET" --subtitle scan -F 2>> $LOG
eject $DEVNAME
rmdir "$SRC"
else
echo "Transcoding all files." >> $LOG
for FILE in `ls "$SRC"`
do
filename=$(basename $FILE)
extension=${filename##*.}
filename=${filename%.*}
echo "Transcoding file $FILE" >> $LOG
$HANDBRAKE_CLI -i $SRC/$FILE -o $DEST/$filename.$DEST_EXT --preset="$HB_PRESET" --subtitle scan -F 2>> $LOG
rm $SRC/$FILE
done
rmdir $SRC
fi
$HANDBRAKE_CLI -i "$SRC/$FILE" -o "$DEST/$filename.$DEST_EXT" --preset="$HB_PRESET" --subtitle scan -F 2>> $LOG
rm "$SRC/$FILE"
done
rmdir "$SRC"
fi
#rmdir $SRC
TRANSEND=$(date +%s);