-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1rip.sh
executable file
·115 lines (90 loc) · 2.62 KB
/
1rip.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#!/bin/bash
### START CONFIG ###
# secs to wait before scanning for new files
SLEEP=90
# file to keep list of processed files
COMPLETEDFILE="1done.list"
# working dir for titles ripped
WORK_DIR="$PWD/1RIPPING"
# location to search for '*.iso' files
ISO_DIR="/data/mirror0/ripping"
# location to move processed ISO files
ISO_DONE_DIR="${ISO_DIR}/1RIPPED"
# directory to save MKV files and folders
PLEX_DIR="/data/mirror0/plex/pennsy"
# do not rip titles shorter than
MINIMUM_SECS_TO_SAVE=240
# for ISOs with multiple titles what is the prefix to the number
## example: <ISO_NAME>/<ISO_NAME>-<PREFIX><TITLE_NUMBER>.mkv
#PREFIX="-Scene-"
PREFIX="-part"
### END CONFIG ###
# environment setup
touch $COMPLETEDFILE
mkdir -p $ISO_DONE_DIR
function logger {
TS=`date`
echo "[${TS}] $@"
}
function listfiles {
for FILE in ${ISO_DIR}/*.iso; do
processfile $FILE
done
logger "INFO: Scan complete, waiting $SLEEP secs before rescanning..."
sleep $SLEEP
listfiles
}
function processfile {
FILEPATH=$1
FILENAME=`basename $FILEPATH`
# capitalize first letters of each word
RAWNAME=`echo $FILENAME | tr '.' ' ' | tr '-' '_' | awk '{ print $1 }' | tr '_' ' ' | tr '[:upper:]' '[:lower:]'`
B=( $RAWNAME )
NAME="${B[@]^}"
# check if file processed
PROCESSED=`grep $FILENAME ${COMPLETEDFILE}`
if [ "$RAWNAME" == "*" ]; then
logger "ERROR: No files found..."
return
elif [ "$PROCESSED" != "" ]; then
logger "ERROR: File already processed... $PROCESSED"
mv $FILEPATH /data/mirror0/ripping/0DONE
return
fi
# clean working dir
rm -rf $WORK_DIR
mkdir $WORK_DIR
# rip titles
logger "INFO: Starting ripping for DVD - '$NAME'"
makemkvcon --minlength=$MINIMUM_SECS_TO_SAVE mkv iso:$FILEPATH all $WORK_DIR
NUMTITLES=`ls $WORK_DIR | wc | awk '{ print $1 }'`
logger "INFO: $NUMTITLES title(s) ripped..."
# remove current data
rm -rf "$PLEX_DIR/${NAME}"
rm -f "$PLEX_DIR/${NAME}.mkv"
# make directory if multiple titles
if [ "$NUMTITLES" != "1" ]; then
mkdir "$PLEX_DIR/${NAME}"
chmod 775 "$PLEX_DIR/${NAME}"
fi
# process each title
COUNTER=1
for TITLE in $WORK_DIR/*.mkv; do
if [ "$NUMTITLES" == "1" ]; then
SAVENAME="${NAME}.mkv"
else
SAVENAME="${NAME}/${NAME}-${PREFIX}${COUNTER}.mkv"
fi
# file processed
logger "INFO: Moving to Plex (${COUNTER}/${NUMTITLES})..."
mv ${TITLE} "$PLEX_DIR/${SAVENAME}"
chmod 664 "$PLEX_DIR/${SAVENAME}"
(( COUNTER++ ))
done
# move ISO
logger "INFO: Marking ISO ripped and moving..."
logger "$FILENAME" >> ${COMPLETEDFILE}
mv $FILEPATH $ISO_DONE_DIR
}
# main process kick off
listfiles