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:
@@ -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
70
getmovietitle.py
Executable 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)
|
||||
28
identify.sh
28
identify.sh
@@ -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
|
||||
|
||||
34
video_rip.sh
34
video_rip.sh
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user