Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1376566d48 | ||
|
|
f7d96c204f | ||
|
|
f2f4413e28 | ||
|
|
635aa556dd | ||
|
|
067c7785c0 | ||
|
|
a986bb450d | ||
|
|
61a944f322 | ||
|
|
4e0a5c4321 | ||
|
|
58cba08405 | ||
|
|
1d5c60bd3f |
10
.abcde.conf
10
.abcde.conf
@@ -63,26 +63,26 @@ CDPARANOIAOPTS="--never-skip=40"
|
|||||||
CDDISCID=cd-discid
|
CDDISCID=cd-discid
|
||||||
|
|
||||||
# Give the base location here for the encoded music files.
|
# Give the base location here for the encoded music files.
|
||||||
OUTPUTDIR="/mnt/media/ARM/"
|
OUTPUTDIR="/mnt/media/ARM/Media/Music/"
|
||||||
|
|
||||||
# The default actions that abcde will take.
|
# The default actions that abcde will take.
|
||||||
ACTIONS=cddb,playlist,getalbumart,read,encode,tag,move,clean
|
ACTIONS=cddb,playlist,getalbumart,read,encode,replaygain,tag,move,clean
|
||||||
|
|
||||||
# Decide here how you want the tracks labelled for a standard 'single-artist',
|
# Decide here how you want the tracks labelled for a standard 'single-artist',
|
||||||
# multi-track encode and also for a multi-track, 'various-artist' encode:
|
# multi-track encode and also for a multi-track, 'various-artist' encode:
|
||||||
OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
|
OUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM}.${TRACKFILE}'
|
||||||
VAOUTPUTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'
|
VAOUTPUTFORMAT='${OUTPUT}/Various Artists/${ALBUMFILE}/${TRACKNUM}.${ARTISTFILE}-${TRACKFILE}'
|
||||||
|
|
||||||
# Decide here how you want the tracks labelled for a standard 'single-artist',
|
# Decide here how you want the tracks labelled for a standard 'single-artist',
|
||||||
# single-track encode and also for a single-track 'various-artist' encode.
|
# single-track encode and also for a single-track 'various-artist' encode.
|
||||||
# (Create a single-track encode with 'abcde -1' from the commandline.)
|
# (Create a single-track encode with 'abcde -1' from the commandline.)
|
||||||
ONETRACKOUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${ALBUMFILE}'
|
ONETRACKOUTPUTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${ALBUMFILE}'
|
||||||
VAONETRACKOUTPUTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${ALBUMFILE}'
|
VAONETRACKOUTPUTFORMAT='${OUTPUT}/Various Artists/${ALBUMFILE}/${ALBUMFILE}'
|
||||||
|
|
||||||
# Create playlists for single and various-artist encodes. I would suggest
|
# Create playlists for single and various-artist encodes. I would suggest
|
||||||
# commenting these out for single-track encoding.
|
# commenting these out for single-track encoding.
|
||||||
PLAYLISTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${ALBUMFILE}.m3u'
|
PLAYLISTFORMAT='${OUTPUT}/${ARTISTFILE}/${ALBUMFILE}/${ALBUMFILE}.m3u'
|
||||||
VAPLAYLISTFORMAT='${OUTPUT}/Various-${ALBUMFILE}/${ALBUMFILE}.m3u'
|
VAPLAYLISTFORMAT='${OUTPUT}/Various Artists/${ALBUMFILE}/${ALBUMFILE}.m3u'
|
||||||
|
|
||||||
# This function takes out dots preceding the album name, and removes a grab
|
# This function takes out dots preceding the album name, and removes a grab
|
||||||
# bag of illegal characters. It allows spaces, if you do not wish spaces add
|
# bag of illegal characters. It allows spaces, if you do not wish spaces add
|
||||||
|
|||||||
28
README.md
28
README.md
@@ -34,18 +34,24 @@ See: https://b3n.org/automatic-ripping-machine
|
|||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
If you have a new DVD drive that you haven't used before, some require setting the region before they can play anything. Be aware most DVD players only let you change the region a handful (4 or 5?) of times then lockout any further changes. If your region is already set or you have a region free DVD drive you can skip this step.
|
||||||
|
|
||||||
|
sudo apt-get install regionset
|
||||||
|
sudo regionset /dev/sr0
|
||||||
|
|
||||||
|
sudo apt-get install git
|
||||||
|
sudo add-apt-repository ppa:heyarje/makemkv-beta
|
||||||
|
sudo add-apt-repository ppa:stebbins/handbrake-releases
|
||||||
|
sudo add-apt-repository ppa:mc3man/xerus-media
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install makemkv-bin makemkv-oss
|
||||||
|
sudo apt install handbrake-cli libavcodec-extra
|
||||||
|
sudo apt install abcde flac imagemagick glyrc cdparanoia
|
||||||
|
sudo apt install at
|
||||||
|
sudo apt install python3 python3-pip
|
||||||
|
sudo apt-get install libdvd-pkg
|
||||||
|
sudo dpkg-reconfigure libdvd-pkg
|
||||||
sudo su
|
sudo su
|
||||||
add-apt-repository ppa:heyarje/makemkv-beta
|
|
||||||
add-apt-repository ppa:stebbins/handbrake-releases
|
|
||||||
add-apt-repository ppa:mc3man/xerus-media
|
|
||||||
apt update
|
|
||||||
apt install makemkv-bin makemkv-oss
|
|
||||||
apt install handbrake-cli libavcodec-extra
|
|
||||||
apt install abcde flac imagemagick glyrc cdparanoia
|
|
||||||
apt install at
|
|
||||||
apt install python3 python3-pip
|
|
||||||
apt-get install libdvd-pkg
|
|
||||||
dpkg-reconfigure libdvd-pkg
|
|
||||||
cd /opt
|
cd /opt
|
||||||
git clone https://github.com/ahnooie/automatic-ripping-machine.git arm
|
git clone https://github.com/ahnooie/automatic-ripping-machine.git arm
|
||||||
cd arm
|
cd arm
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ SKIP_TRANSCODE=false
|
|||||||
|
|
||||||
# Base directory of ARM media directory
|
# Base directory of ARM media directory
|
||||||
# Ripped and transcoded files end up here
|
# Ripped and transcoded files end up here
|
||||||
ARMPATH="/mnt/media/ARM/"
|
ARMPATH="/mnt/media/ARM/Media/Unidentified/"
|
||||||
|
|
||||||
# Path to raw MakeMKV directory
|
# Path to raw MakeMKV directory
|
||||||
# Destination for MakeMKV and source for HandBrake
|
# Destination for MakeMKV and source for HandBrake
|
||||||
@@ -30,7 +30,7 @@ RAWPATH="/mnt/media/ARM/raw/"
|
|||||||
|
|
||||||
# Path to final media directory
|
# Path to final media directory
|
||||||
# Destination for final file. Only used for movies that are positively identified
|
# Destination for final file. Only used for movies that are positively identified
|
||||||
MEDIA_DIR="/mnt/media/ARM/emby/movies/"
|
MEDIA_DIR="/mnt/media/ARM/Media/Movies/"
|
||||||
|
|
||||||
# Path to directory to hold log files
|
# Path to directory to hold log files
|
||||||
# Make sure to include trailing /
|
# Make sure to include trailing /
|
||||||
@@ -39,6 +39,16 @@ LOGPATH="/opt/arm/logs/"
|
|||||||
# How long to let log files live before deleting (in days)
|
# How long to let log files live before deleting (in days)
|
||||||
LOGLIFE=1
|
LOGLIFE=1
|
||||||
|
|
||||||
|
########################
|
||||||
|
## File Permissions ##
|
||||||
|
########################
|
||||||
|
|
||||||
|
# Enabling this seting will allow you to adjust the default file permissions of the outputted files
|
||||||
|
# The default value is set to 777 for read/write/execute for all users, but can be changed below using the "CHMOD_VALUE" setting
|
||||||
|
# This setting is helpfuly when storing the data locally on the system
|
||||||
|
SET_MEDIA_PERMISSIONS=false
|
||||||
|
CHMOD_VALUE=777
|
||||||
|
|
||||||
########################
|
########################
|
||||||
## MakeMKV Parameters ##
|
## MakeMKV Parameters ##
|
||||||
########################
|
########################
|
||||||
@@ -54,6 +64,13 @@ MINLENGTH="600"
|
|||||||
# DVD's will always default back to the "mkv" mode. If this is set to "backup" then you must also set HandBrake's MAINFEATURE to true.
|
# DVD's will always default back to the "mkv" mode. If this is set to "backup" then you must also set HandBrake's MAINFEATURE to true.
|
||||||
RIPMETHOD="mkv"
|
RIPMETHOD="mkv"
|
||||||
|
|
||||||
|
# MakeMKV Arguments
|
||||||
|
# MakeMKV Profile used for controlling Audio Track Selection.
|
||||||
|
# This is the default profile MakeMKV uses for Audio track selection. Updating this file or changing it is considered
|
||||||
|
# to be advanced usage of MakeMKV. But this will allow users to alternatively tell makemkv to select HD audio tracks and etc.
|
||||||
|
# MKV_ARGS="--profile=/opt/arm/default.mmcp.xml"
|
||||||
|
MKV_ARGS=""
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
## HandBrake Parameters ##
|
## HandBrake Parameters ##
|
||||||
##########################
|
##########################
|
||||||
@@ -76,6 +93,16 @@ HANDBRAKE_CLI=HandBrakeCLI
|
|||||||
# However, it does not handle tv shows well at all. You will likely want this value to be false when ripping tv shows.
|
# However, it does not handle tv shows well at all. You will likely want this value to be false when ripping tv shows.
|
||||||
MAINFEATURE=false
|
MAINFEATURE=false
|
||||||
|
|
||||||
|
# Additional HandBrake arguments.
|
||||||
|
HB_ARGS="--subtitle scan -F"
|
||||||
|
|
||||||
|
#####################
|
||||||
|
## Enable Plex Use ##
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# Set this setting to true, to enable Plex Extras support
|
||||||
|
PLEX_SUPPORT=false
|
||||||
|
|
||||||
#####################
|
#####################
|
||||||
## Emby Parameters ##
|
## Emby Parameters ##
|
||||||
#####################
|
#####################
|
||||||
@@ -126,6 +153,11 @@ PB_KEY=""
|
|||||||
# IFTTT Event Name
|
# IFTTT Event Name
|
||||||
IFTTT_EVENT="arm_event"
|
IFTTT_EVENT="arm_event"
|
||||||
|
|
||||||
|
# Pushover API User and Application Key
|
||||||
|
# Leave User key empty or comment out to disable Pushover notifications
|
||||||
|
PO_USER_KEY=""
|
||||||
|
PO_APP_KEY=""
|
||||||
|
|
||||||
# Determine logfile name
|
# Determine logfile name
|
||||||
# use the label of the DVD/CD or else use empty.log
|
# use the label of the DVD/CD or else use empty.log
|
||||||
# this is required for udev events where there is no media available
|
# this is required for udev events where there is no media available
|
||||||
|
|||||||
15
data_rip.sh
15
data_rip.sh
@@ -7,18 +7,21 @@ source "$ARM_CONFIG"
|
|||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TIMESTAMP=$(date '+%Y%m%d_%H%M%S');
|
TIMESTAMP=$(date '+%Y%m%d_%H%M%S');
|
||||||
DEST="/mnt/media/ARM/${TIMESTAMP}_${ID_FS_LABEL}"
|
DEST="/mnt/media/ARM/Media/Data/${TIMESTAMP}_${ID_FS_LABEL}"
|
||||||
mkdir "$DEST"
|
mkdir -p "$DEST"
|
||||||
FILENAME=${ID_FS_LABEL}_disc.iso
|
FILENAME=${ID_FS_LABEL}_disc.iso
|
||||||
|
|
||||||
|
|
||||||
#dd if=/dev/sr0 of=$DEST/$FILENAME
|
#dd if=/dev/sr0 of=$DEST/$FILENAME
|
||||||
cat "$DEVNAME" > "$DEST/$FILENAME"
|
cat "$DEVNAME" > "$DEST/$FILENAME"
|
||||||
|
|
||||||
eject
|
eject "$DEVNAME"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$DEST"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
} >> "$LOG"
|
} >> "$LOG"
|
||||||
|
|||||||
69
default.mmcp.xml
Normal file
69
default.mmcp.xml
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<profile>
|
||||||
|
<!-- profile name - Default -->
|
||||||
|
<name lang="mogz">:5086</name>
|
||||||
|
|
||||||
|
<!-- Common MKV flags -->
|
||||||
|
<mkvSettings
|
||||||
|
ignoreForcedSubtitlesFlag="true"
|
||||||
|
useISO639Type2T="false"
|
||||||
|
setFirstAudioTrackAsDefault="true"
|
||||||
|
setFirstSubtitleTrackAsDefault="true"
|
||||||
|
setFirstForcedSubtitleTrackAsDefault="true"
|
||||||
|
insertFirstChapter00IfMissing="true"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Settings overridable in preferences -->
|
||||||
|
<profileSettings
|
||||||
|
app_DefaultSelectionString="-sel:all,+sel:(favlang|nolang|single),-sel:(havemulti|havecore),-sel:mvcvideo,=100:all,-10:favlang"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- Output formats currently supported by MakeMKV -->
|
||||||
|
<outputSettings name="copy" outputFormat="directCopy">
|
||||||
|
<description lang="eng">Copy track as is</description>
|
||||||
|
<description lang="ger">Track 1:1 kopieren</description>
|
||||||
|
</outputSettings>
|
||||||
|
|
||||||
|
<outputSettings name="lpcm" outputFormat="LPCM-raw">
|
||||||
|
<description lang="eng">Save as raw LPCM</description>
|
||||||
|
<description lang="ger">Als RAW LPCM speichern</description>
|
||||||
|
</outputSettings>
|
||||||
|
|
||||||
|
<outputSettings name="wavex" outputFormat="LPCM-wavex">
|
||||||
|
<description lang="eng">Save as LPCM in WAV container</description>
|
||||||
|
<description lang="ger">Als LPCM im WAV-Container speichern</description>
|
||||||
|
</outputSettings>
|
||||||
|
|
||||||
|
<outputSettings name="flac-best" outputFormat="FLAC">
|
||||||
|
<description lang="eng">Save as FLAC (best compression)</description>
|
||||||
|
<description lang="ger">Als FLAC speichern (höchste Komprimierungsstufe)</description>
|
||||||
|
<extraArgs>-compression_level 12</extraArgs>
|
||||||
|
</outputSettings>
|
||||||
|
|
||||||
|
<outputSettings name="flac-fast" outputFormat="FLAC">
|
||||||
|
<description lang="eng">Save as FLAC (fast compression)</description>
|
||||||
|
<extraArgs>-compression_level 5</extraArgs>
|
||||||
|
</outputSettings>
|
||||||
|
|
||||||
|
<!-- Default rule - copy as is -->
|
||||||
|
<trackSettings input="default">
|
||||||
|
<output outputSettingsName="copy"
|
||||||
|
defaultSelection="$app_DefaultSelectionString">
|
||||||
|
</output>
|
||||||
|
</trackSettings>
|
||||||
|
|
||||||
|
<!-- Save LPCM mono or stereo as raw LPCM -->
|
||||||
|
<trackSettings input="LPCM-stereo">
|
||||||
|
<output outputSettingsName="lpcm"
|
||||||
|
defaultSelection="$app_DefaultSelectionString">
|
||||||
|
</output>
|
||||||
|
</trackSettings>
|
||||||
|
|
||||||
|
<!-- Put multi-channel LPCM into WAVEX container-->
|
||||||
|
<trackSettings input="LPCM-multi">
|
||||||
|
<output outputSettingsName="wavex"
|
||||||
|
defaultSelection="$app_DefaultSelectionString">
|
||||||
|
</output>
|
||||||
|
</trackSettings>
|
||||||
|
|
||||||
|
</profile>
|
||||||
@@ -19,6 +19,7 @@ def getdvdtype():
|
|||||||
""" Queries OMDbapi.org for title information and parses if it's a movie
|
""" Queries OMDbapi.org for title information and parses if it's a movie
|
||||||
or a tv series """
|
or a tv series """
|
||||||
dvd_title = args.title
|
dvd_title = args.title
|
||||||
|
needs_new_year = "false"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
year = dvd_title[(dvd_title.rindex('(')):len(dvd_title)]
|
year = dvd_title[(dvd_title.rindex('(')):len(dvd_title)]
|
||||||
@@ -37,21 +38,39 @@ def getdvdtype():
|
|||||||
if year is None:
|
if year is None:
|
||||||
year = ""
|
year = ""
|
||||||
|
|
||||||
dvd_type = callwebservice(dvd_title, year)
|
dvd_type = callwebservice(dvd_title_clean, year)
|
||||||
|
# print (dvd_type)
|
||||||
|
|
||||||
# handle failures
|
# handle failures
|
||||||
# first see if there is a hyphen and split it
|
# this is kind of kludgy, but it kind of work...
|
||||||
if (dvd_title.find("-") > -1):
|
if (dvd_type == "fail"):
|
||||||
dvd_title_slice = dvd_title[:dvd_title.find("-")]
|
|
||||||
dvd_title_slice =cleanupstring(dvd_title_slice)
|
|
||||||
dvd_type = callwebservice(dvd_title_slice)
|
|
||||||
|
|
||||||
# if still fail, then try slicing off the last word in a loop
|
|
||||||
while dvd_type == "fail" and dvd_title_clean.count('+') > 0:
|
|
||||||
dvd_title_clean = dvd_title_clean.rsplit('+', 1)[0]
|
|
||||||
dvd_type = callwebservice(dvd_title_clean)
|
|
||||||
|
|
||||||
return dvd_type
|
# first try submitting without the year
|
||||||
|
dvd_type = callwebservice(dvd_title_clean, "")
|
||||||
|
# print (dvd_type)
|
||||||
|
|
||||||
|
if (dvd_type != "fail"):
|
||||||
|
#that means the year is wrong.
|
||||||
|
needs_new_year = "true"
|
||||||
|
|
||||||
|
if (dvd_type == "fail"):
|
||||||
|
# second see if there is a hyphen and split it
|
||||||
|
if (dvd_title.find("-") > -1):
|
||||||
|
dvd_title_slice = dvd_title[:dvd_title.find("-")]
|
||||||
|
dvd_title_slice =cleanupstring(dvd_title_slice)
|
||||||
|
dvd_type = callwebservice(dvd_title_slice)
|
||||||
|
|
||||||
|
# if still fail, then try slicing off the last word in a loop
|
||||||
|
while dvd_type == "fail" and dvd_title_clean.count('+') > 0:
|
||||||
|
dvd_title_clean = dvd_title_clean.rsplit('+', 1)[0]
|
||||||
|
dvd_type = callwebservice(dvd_title_clean)
|
||||||
|
|
||||||
|
if needs_new_year == "true":
|
||||||
|
#pass the new year back to bash to handle
|
||||||
|
global new_year
|
||||||
|
return dvd_type + "#" + new_year
|
||||||
|
else:
|
||||||
|
return dvd_type
|
||||||
|
|
||||||
def cleanupstring(string):
|
def cleanupstring(string):
|
||||||
# clean up title string to pass to OMDbapi.org
|
# clean up title string to pass to OMDbapi.org
|
||||||
@@ -61,6 +80,8 @@ def cleanupstring(string):
|
|||||||
def callwebservice(dvd_title, year=""):
|
def callwebservice(dvd_title, year=""):
|
||||||
""" Queries OMDbapi.org for title information and parses if it's a movie
|
""" Queries OMDbapi.org for title information and parses if it's a movie
|
||||||
or a tv series """
|
or a tv series """
|
||||||
|
# print (dvd_title)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dvd_title_info_json = urllib.request.urlopen("http://www.omdbapi.com/?t={0}&y={1}&plot=short&r=json".format(dvd_title, year)).read()
|
dvd_title_info_json = urllib.request.urlopen("http://www.omdbapi.com/?t={0}&y={1}&plot=short&r=json".format(dvd_title, year)).read()
|
||||||
except:
|
except:
|
||||||
@@ -70,9 +91,11 @@ def callwebservice(dvd_title, year=""):
|
|||||||
if doc['Response'] == "False":
|
if doc['Response'] == "False":
|
||||||
return "fail"
|
return "fail"
|
||||||
else:
|
else:
|
||||||
|
global new_year
|
||||||
|
new_year = doc['Year']
|
||||||
return doc['Type']
|
return doc['Type']
|
||||||
|
|
||||||
args = entry()
|
args = entry()
|
||||||
|
|
||||||
dvd_type = getdvdtype()
|
dvd_type = getdvdtype()
|
||||||
print(dvd_type)
|
print(dvd_type)
|
||||||
13
identify.sh
13
identify.sh
@@ -70,7 +70,18 @@ if [ "$ID_FS_TYPE" == "udf" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $HAS_NICE_TITLE == true ]; then
|
if [ $HAS_NICE_TITLE == true ]; then
|
||||||
VIDEO_TYPE=$(/opt/arm/getvideotype.py -t "${VIDEO_TITLE}" 2>&1)
|
VTYPE=$(/opt/arm/getvideotype.py -t "${VIDEO_TITLE}" 2>&1)
|
||||||
|
|
||||||
|
#handle year mismath if found
|
||||||
|
if [[ $VTYPE =~ .*#.* ]]; then
|
||||||
|
VIDEO_TYPE=$(echo "$VTYPE" | cut -f1 -d#)
|
||||||
|
NEW_YEAR=$(echo "$VTYPE" | cut -f2 -d#)
|
||||||
|
echo "VIDEO_TYPE is $VIDEO_TYPE and NEW_YEAR is $NEW_YEAR"
|
||||||
|
VIDEO_TITLE="$(echo "$VIDEO_TITLE" | cut -f1 -d\()($NEW_YEAR)"
|
||||||
|
echo "Year mismatch found. New video title is $VIDEO_TITLE"
|
||||||
|
else
|
||||||
|
VIDEO_TYPE="$VTYPE"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
VIDEO_TYPE="unknown"
|
VIDEO_TYPE="unknown"
|
||||||
fi
|
fi
|
||||||
|
|||||||
10
notify.sh
10
notify.sh
@@ -26,5 +26,15 @@ else
|
|||||||
printf "\nIFTTT notification sent" >> "$LOG"
|
printf "\nIFTTT notification sent" >> "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#Notification via Pushover
|
||||||
|
#Trigger onl if variable is set
|
||||||
|
if [ -z "$PO_USER_KEY" ]; then
|
||||||
|
echo "Pusover notifications not enabled" >> "$LOG"
|
||||||
|
else
|
||||||
|
echo "Sending Pushover notification" >> "$LOG"
|
||||||
|
curl -s --form-string "token=$PO_APP_KEY" --form-string "user=$PO_USER_KEY" --form-string "message=$MSG" https://api.pushover.net/1/messages.json
|
||||||
|
echo "Pushover notification sent" >> "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
} >> "$LOG"
|
} >> "$LOG"
|
||||||
|
|
||||||
|
|||||||
@@ -17,14 +17,14 @@ VIDEO_TYPE=$3
|
|||||||
DEST="${RAWPATH}/${VIDEO_TITLE}_${TIMESTAMP}"
|
DEST="${RAWPATH}/${VIDEO_TITLE}_${TIMESTAMP}"
|
||||||
RIPSTART=$(date +%s);
|
RIPSTART=$(date +%s);
|
||||||
|
|
||||||
mkdir "$DEST"
|
mkdir -p "$DEST"
|
||||||
|
|
||||||
#echo /opt/arm/video_transcode.sh \"$DEST\" \"$VIDEO_TITLE\" $TIMESTAMP >> $LOG
|
#echo /opt/arm/video_transcode.sh \"$DEST\" \"$VIDEO_TITLE\" $TIMESTAMP >> $LOG
|
||||||
if [ "$RIPMETHOD" = "backup" ] && [ "$ID_CDROM_MEDIA_BD" = "1" ]; then
|
if [ "$RIPMETHOD" = "backup" ] && [ "$ID_CDROM_MEDIA_BD" = "1" ]; then
|
||||||
echo "Using backup method of ripping." >> "$LOG"
|
echo "Using backup method of ripping." >> "$LOG"
|
||||||
DISC="${DEVNAME: -1}"
|
DISC="${DEVNAME: -1}"
|
||||||
echo "Sending command: makemkvcon backup --decrypt -r disc:$DISC $DEST"
|
# shellcheck disable=SC2086
|
||||||
makemkvcon backup --decrypt -r disc:"$DISC" "$DEST"/
|
makemkvcon backup --decrypt $MKV_ARGS -r disc:"$DISC" "$DEST"/
|
||||||
eject "$DEVNAME"
|
eject "$DEVNAME"
|
||||||
elif [ "$MAINFEATURE" = true ] && [ "$ID_CDROM_MEDIA_DVD" = "1" ] && [ -z "$ID_CDROM_MEDIA_BD" ]; then
|
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 "Media is DVD and Main Feature parameter in config file is true. Bypassing MakeMKV." >> "$LOG"
|
||||||
@@ -33,7 +33,8 @@ VIDEO_TYPE=$3
|
|||||||
echo "DEST is ${DEST}"
|
echo "DEST is ${DEST}"
|
||||||
else
|
else
|
||||||
echo "Using mkv method of ripping." >> "$LOG"
|
echo "Using mkv method of ripping." >> "$LOG"
|
||||||
makemkvcon mkv dev:"$DEVNAME" all "$DEST" --minlength="$MINLENGTH" -r
|
# shellcheck disable=SC2086
|
||||||
|
makemkvcon mkv $MKV_ARGS dev:"$DEVNAME" all "$DEST" --minlength="$MINLENGTH" -r
|
||||||
eject "$DEVNAME"
|
eject "$DEVNAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -29,14 +29,15 @@ TIMESTAMP=$5
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# DEST="${ARMPATH}/${LABEL}_${TIMESTAMP}"
|
# DEST="${ARMPATH}/${LABEL}_${TIMESTAMP}"
|
||||||
mkdir "$DEST"
|
mkdir -p "$DEST"
|
||||||
if [ "$SKIP_TRANSCODE" = true ] && [ "$RIPMETHOD" = "mkv" ]; then
|
if [ "$SKIP_TRANSCODE" = true ] && [ "$RIPMETHOD" = "mkv" ]; then
|
||||||
# this only works for files ripped by MakeMKV into .mkv files
|
# this only works for files ripped by MakeMKV into .mkv files
|
||||||
echo "Skipping transcode. Moving files from $SRC to $DEST" >> "$LOG"
|
echo "Skipping transcode. Moving files from $SRC to $DEST" >> "$LOG"
|
||||||
mv "$SRC"/* "$DEST"/ >> "$LOG"
|
mv "$SRC"/* "$DEST"/ >> "$LOG"
|
||||||
elif [ "$RIPMETHOD" = "backup" ] && [ "$MAINFEATURE" = true ] && [ "$ID_CDROM_MEDIA_BD" = "1" ]; then
|
elif [ "$RIPMETHOD" = "backup" ] && [ "$MAINFEATURE" = true ] && [ "$ID_CDROM_MEDIA_BD" = "1" ]; then
|
||||||
echo "Transcoding BluRay main feature only." >> "$LOG"
|
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"
|
# shellcheck disable=SC2086
|
||||||
|
$HANDBRAKE_CLI -i "$SRC" -o "$DEST/$LABEL.$DEST_EXT" --main-feature --preset="$HB_PRESET" $HB_ARGS 2>> "$LOG"
|
||||||
rmdir "$SRC"
|
rmdir "$SRC"
|
||||||
elif [ "$RIPMETHOD" = "backup" ] && [ "$MAINFEATURE" = false ] && [ "$ID_CDROM_MEDIA_BD" = "1" ]; then
|
elif [ "$RIPMETHOD" = "backup" ] && [ "$MAINFEATURE" = false ] && [ "$ID_CDROM_MEDIA_BD" = "1" ]; then
|
||||||
echo "Transcoding BluRay all titles above minlength." >> "$LOG"
|
echo "Transcoding BluRay all titles above minlength." >> "$LOG"
|
||||||
@@ -58,7 +59,8 @@ TIMESTAMP=$5
|
|||||||
echo "Title length is $SEC seconds." >> "$LOG"
|
echo "Title length is $SEC seconds." >> "$LOG"
|
||||||
if [ $SEC -gt "$MINLENGTH" ]; then
|
if [ $SEC -gt "$MINLENGTH" ]; then
|
||||||
echo "HandBraking title $TITLE"
|
echo "HandBraking title $TITLE"
|
||||||
$HANDBRAKE_CLI -i "$SRC" -o "$DEST/$LABEL-$TITLE.$DEST_EXT" --min-duration="$MINLENGTH" -t "$TITLE" --preset="$HB_PRESET" --subtitle scan -F 2 >> "$LOG"
|
# shellcheck disable=SC2086
|
||||||
|
$HANDBRAKE_CLI -i "$SRC" -o "$DEST/$LABEL-$TITLE.$DEST_EXT" --min-duration="$MINLENGTH" -t "$TITLE" --preset="$HB_PRESET" $HB_ARGS 2 >> "$LOG"
|
||||||
|
|
||||||
# Check for main title and rename
|
# Check for main title and rename
|
||||||
if [ "$MAINTITLENO" = "$TITLE" ] && [ "$HAS_NICE_TITLE" = true ]; then
|
if [ "$MAINTITLENO" = "$TITLE" ] && [ "$HAS_NICE_TITLE" = true ]; then
|
||||||
@@ -73,7 +75,8 @@ TIMESTAMP=$5
|
|||||||
elif [ "$MAINFEATURE" = true ] && [ "$ID_CDROM_MEDIA_DVD" = "1" ]; then
|
elif [ "$MAINFEATURE" = true ] && [ "$ID_CDROM_MEDIA_DVD" = "1" ]; then
|
||||||
echo "Transcoding DVD main feature only." >> "$LOG"
|
echo "Transcoding DVD main feature only." >> "$LOG"
|
||||||
# echo "$HANDBRAKE_CLI -i $DEVNAME -o \"${DEST}/${LABEL}.${DEST_EXT}\" --main-feature --preset="${HB_PRESET}" --subtitle scan -F 2" >> $LOG
|
# echo "$HANDBRAKE_CLI -i $DEVNAME -o \"${DEST}/${LABEL}.${DEST_EXT}\" --main-feature --preset="${HB_PRESET}" --subtitle scan -F 2" >> $LOG
|
||||||
$HANDBRAKE_CLI -i "$DEVNAME" -o "${DEST}/${LABEL}.${DEST_EXT}" --main-feature --preset="${HB_PRESET}" --subtitle scan -F 2>> "$LOG"
|
# shellcheck disable=SC2086
|
||||||
|
$HANDBRAKE_CLI -i "$DEVNAME" -o "${DEST}/${LABEL}.${DEST_EXT}" --main-feature --preset="${HB_PRESET}" $HB_ARGS 2>> "$LOG"
|
||||||
eject "$DEVNAME"
|
eject "$DEVNAME"
|
||||||
else
|
else
|
||||||
echo "Transcoding all files." >> "$LOG"
|
echo "Transcoding all files." >> "$LOG"
|
||||||
@@ -86,7 +89,8 @@ TIMESTAMP=$5
|
|||||||
filename=${filename%.*}
|
filename=${filename%.*}
|
||||||
|
|
||||||
echo "Transcoding file $FILE" >> "$LOG"
|
echo "Transcoding file $FILE" >> "$LOG"
|
||||||
$HANDBRAKE_CLI -i "$SRC/$FILE" -o "$DEST/$filename.$DEST_EXT" --preset="$HB_PRESET" --subtitle scan -F 2>> "$LOG"
|
# shellcheck disable=SC2086
|
||||||
|
$HANDBRAKE_CLI -i "$SRC/$FILE" -o "$DEST/$filename.$DEST_EXT" --preset="$HB_PRESET" $HB_ARGS 2>> "$LOG"
|
||||||
rm "$SRC/$FILE"
|
rm "$SRC/$FILE"
|
||||||
done
|
done
|
||||||
rmdir "$SRC"
|
rmdir "$SRC"
|
||||||
@@ -116,6 +120,12 @@ TIMESTAMP=$5
|
|||||||
if [ ! -f "$MEDIA_DIR/$LABEL.$DEST_EXT" ]; then
|
if [ ! -f "$MEDIA_DIR/$LABEL.$DEST_EXT" ]; then
|
||||||
echo "No file found. Moving \"$DEST/$LABEL.$DEST_EXT to $MEDIA_DIR/$LABEL.$DEST_EXT\"" >> "$LOG"
|
echo "No file found. Moving \"$DEST/$LABEL.$DEST_EXT to $MEDIA_DIR/$LABEL.$DEST_EXT\"" >> "$LOG"
|
||||||
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL.$DEST_EXT"
|
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL.$DEST_EXT"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$MEDIA_DIR"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$EMBY_REFRESH" = true ]; then
|
if [ "$EMBY_REFRESH" = true ]; then
|
||||||
# signal emby to scan library
|
# signal emby to scan library
|
||||||
@@ -130,10 +140,16 @@ TIMESTAMP=$5
|
|||||||
# shellcheck disable=SC2129,SC2016
|
# shellcheck disable=SC2129,SC2016
|
||||||
echo '$VIDEO_TYPE is movie, $MAINFEATURE is true, $HAS_NICE_TITLE is true, $EMBY_SUBFOLDERS is true' >> "$LOG"
|
echo '$VIDEO_TYPE is movie, $MAINFEATURE is true, $HAS_NICE_TITLE is true, $EMBY_SUBFOLDERS is true' >> "$LOG"
|
||||||
echo "Moving a single file to emby subfolders" >> "$LOG"
|
echo "Moving a single file to emby subfolders" >> "$LOG"
|
||||||
mkdir "$MEDIA_DIR/$LABEL" >> "$LOG"
|
mkdir -p "$MEDIA_DIR/$LABEL" >> "$LOG"
|
||||||
if [ ! -f "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT" ]; then
|
if [ ! -f "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT" ]; then
|
||||||
echo "No file found. Moving \"$DEST/$LABEL.$DEST_EXT to $MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT\"" >> "$LOG"
|
echo "No file found. Moving \"$DEST/$LABEL.$DEST_EXT to $MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT\"" >> "$LOG"
|
||||||
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT"
|
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$MEDIA_DIR/$LABEL"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$EMBY_REFRESH" = true ]; then
|
if [ "$EMBY_REFRESH" = true ]; then
|
||||||
# signal emby to scan library
|
# signal emby to scan library
|
||||||
@@ -151,6 +167,13 @@ TIMESTAMP=$5
|
|||||||
echo "***WARNING!*** This will likely leave files in the transcoding directory as there is very likely existing files in the media directory"
|
echo "***WARNING!*** This will likely leave files in the transcoding directory as there is very likely existing files in the media directory"
|
||||||
echo "Moving multiple files to emby movie folder" >> "$LOG"
|
echo "Moving multiple files to emby movie folder" >> "$LOG"
|
||||||
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL.$DEST_EXT"
|
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL.$DEST_EXT"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$MEDIA_DIR"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$EMBY_REFRESH" = true ]; then
|
if [ "$EMBY_REFRESH" = true ]; then
|
||||||
# signal emby to scan library
|
# signal emby to scan library
|
||||||
embyrefresh
|
embyrefresh
|
||||||
@@ -162,23 +185,70 @@ TIMESTAMP=$5
|
|||||||
echo '$VIDEO_TYPE is movie, $MAINFEATURE is false, $HAS_NICE_TITLE is true, $EMBY_SUBFOLDERS is true' >> "$LOG"
|
echo '$VIDEO_TYPE is movie, $MAINFEATURE is false, $HAS_NICE_TITLE is true, $EMBY_SUBFOLDERS is true' >> "$LOG"
|
||||||
echo "Moving multiple files to emby movie subfolders" >> "$LOG"
|
echo "Moving multiple files to emby movie subfolders" >> "$LOG"
|
||||||
echo "First move main title" >> "$LOG"
|
echo "First move main title" >> "$LOG"
|
||||||
mkdir -v "$MEDIA_DIR/$LABEL" >> "$LOG"
|
mkdir -p -v "$MEDIA_DIR/$LABEL" >> "$LOG"
|
||||||
if [ ! -f "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT" ]; then
|
if [ ! -f "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT" ]; then
|
||||||
echo "No file found. Moving \"$DEST/$LABEL.$DEST_EXT to $MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT\"" >> "$LOG"
|
echo "No file found. Moving \"$DEST/$LABEL.$DEST_EXT to $MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT\"" >> "$LOG"
|
||||||
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT" >> "$LOG"
|
mv -n "$DEST/$LABEL.$DEST_EXT" "$MEDIA_DIR/$LABEL/$LABEL.$DEST_EXT" >> "$LOG"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$MEDIA_DIR/$LABEL"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#now move "extras"
|
#now move "extras"
|
||||||
# shellcheck disable=SC2129,SC2016
|
if [ "$PLEX_SUPPORT" = true ]; then
|
||||||
mkdir -v "$MEDIA_DIR/$LABEL/extras" >> "$LOG"
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2129,SC2016
|
||||||
echo "Sending command: mv -n "\"$DEST/$LABEL/*\"" "\"$MEDIA_DIR/$LABEL/extras/\""" >> "$LOG"
|
mkdir -p -v "$MEDIA_DIR/$LABEL/Featurettes" >> "$LOG"
|
||||||
mv -n "${DEST}"/* "$MEDIA_DIR/$LABEL/extras/" >> "$LOG"
|
|
||||||
if [ "$EMBY_REFRESH" = true ]; then
|
# Create Emby ignore file for "extras" Folder
|
||||||
# signal emby to scan library
|
touch "$MEDIA_DIR/$LABEL/Featurettes/.ignore" >> "$LOG"
|
||||||
embyrefresh
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
echo "Sending command: mv -n "\"$DEST/$LABEL/*\"" "\"$MEDIA_DIR/$LABEL/Featurettes/\""" >> "$LOG"
|
||||||
|
mv -n "${DEST}"/* "$MEDIA_DIR/$LABEL/Featurettes/" >> "$LOG"
|
||||||
|
|
||||||
|
# Move Largest file to main folder for Plex/Emby/Kodi to detect main movie
|
||||||
|
# shellcheck disable=SC2012
|
||||||
|
ls -S "$MEDIA_DIR/$LABEL/Featurettes/" | head -1 | xargs -I '{}' mv "$MEDIA_DIR/$LABEL/Featurettes/"{} "$MEDIA_DIR/$LABEL/$LABEL.mkv" >> "$LOG"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$MEDIA_DIR/$LABEL"
|
||||||
|
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "Emby Refresh False. Skipping library scan" >> "$LOG"
|
|
||||||
|
# shellcheck disable=SC2129,SC2016
|
||||||
|
mkdir -p -v "$MEDIA_DIR/$LABEL/extras" >> "$LOG"
|
||||||
|
|
||||||
|
# Create Plex ignore file for "extras" Folder
|
||||||
|
touch "$MEDIA_DIR/$LABEL/extras/.plexignore" >> "$LOG"
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
echo "Sending command: mv -n "\"$DEST/$LABEL/*\"" "\"$MEDIA_DIR/$LABEL/extras/\""" >> "$LOG"
|
||||||
|
mv -n "${DEST}"/* "$MEDIA_DIR/$LABEL/extras/" >> "$LOG"
|
||||||
|
|
||||||
|
# Move Largest file to main folder for Plex/Emby/Kodi to detect main movie
|
||||||
|
# shellcheck disable=SC2012
|
||||||
|
ls -S "$MEDIA_DIR/$LABEL/extras/" | head -1 | xargs -I '{}' mv "$MEDIA_DIR/$LABEL/extras/"{} "$MEDIA_DIR/$LABEL/$LABEL.mkv" >> "$LOG"
|
||||||
|
|
||||||
|
if [ "$SET_MEDIA_PERMISSIONS" = true ]; then
|
||||||
|
|
||||||
|
chmod -R "$CHMOD_VALUE" "$MEDIA_DIR/$LABEL"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$EMBY_REFRESH" = true ]; then
|
||||||
|
# signal emby to scan library
|
||||||
|
embyrefresh
|
||||||
|
else
|
||||||
|
echo "Emby Refresh False. Skipping library scan" >> "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
rmdir "$DEST"
|
rmdir "$DEST"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user