diff --git a/.abcde.conf b/.abcde.conf index 38f7614..e5cb336 100644 --- a/.abcde.conf +++ b/.abcde.conf @@ -63,26 +63,26 @@ CDPARANOIAOPTS="--never-skip=40" CDDISCID=cd-discid # 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. -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', # multi-track encode and also for a multi-track, 'various-artist' encode: 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', # single-track encode and also for a single-track 'various-artist' encode. # (Create a single-track encode with 'abcde -1' from the commandline.) 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 # commenting these out for single-track encoding. 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 # bag of illegal characters. It allows spaces, if you do not wish spaces add diff --git a/README.md b/README.md index 1a36f3b..f0c9758 100644 --- a/README.md +++ b/README.md @@ -34,20 +34,23 @@ See: https://b3n.org/automatic-ripping-machine ## Install + sudo apt-get install git + sudo apt-get install regionset + sudo regionset /dev/sr0 + 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 - 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 - git clone https://github.com/ahnooie/automatic-ripping-machine.git arm + git clone https://github.com/RandomNinjaAtk/automatic-ripping-machine.git arm cd arm pip3 install -r requirements.txt ln -s /opt/arm/51-automedia.rules /lib/udev/rules.d/ diff --git a/config.sample b/config.sample index 2b6c5d3..e55cd9d 100755 --- a/config.sample +++ b/config.sample @@ -22,7 +22,7 @@ SKIP_TRANSCODE=false # Base directory of ARM media directory # Ripped and transcoded files end up here -ARMPATH="/mnt/media/ARM/" +ARMPATH="/mnt/media/ARM/Media/Unidentified/" # Path to raw MakeMKV directory # Destination for MakeMKV and source for HandBrake @@ -30,7 +30,7 @@ RAWPATH="/mnt/media/ARM/raw/" # Path to final media directory # 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 # Make sure to include trailing / @@ -39,6 +39,16 @@ LOGPATH="/opt/arm/logs/" # How long to let log files live before deleting (in days) 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 ## ######################## @@ -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. 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 ## ########################## @@ -79,6 +96,13 @@ 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 ## ##################### diff --git a/data_rip.sh b/data_rip.sh index c465fe8..a34496a 100755 --- a/data_rip.sh +++ b/data_rip.sh @@ -7,11 +7,9 @@ source "$ARM_CONFIG" { - - TIMESTAMP=$(date '+%Y%m%d_%H%M%S'); - DEST="/mnt/media/ARM/${TIMESTAMP}_${ID_FS_LABEL}" - mkdir "$DEST" + DEST="/mnt/media/ARM/Media/Data/${TIMESTAMP}_${ID_FS_LABEL}" + mkdir -p "$DEST" FILENAME=${ID_FS_LABEL}_disc.iso @@ -19,6 +17,11 @@ source "$ARM_CONFIG" cat "$DEVNAME" > "$DEST/$FILENAME" eject - + + if [ "$SET_MEDIA_PERMISSIONS" = true ]; then + + chmod -R "$CHMOD_VALUE" "$DEST" + + fi } >> "$LOG" diff --git a/default.mmcp.xml b/default.mmcp.xml new file mode 100644 index 0000000..f034555 --- /dev/null +++ b/default.mmcp.xml @@ -0,0 +1,69 @@ + + + + :5086 + + + + + + + + + + Copy track as is + Track 1:1 kopieren + + + + Save as raw LPCM + Als RAW LPCM speichern + + + + Save as LPCM in WAV container + Als LPCM im WAV-Container speichern + + + + Save as FLAC (best compression) + Als FLAC speichern (höchste Komprimierungsstufe) + -compression_level 12 + + + + Save as FLAC (fast compression) + -compression_level 5 + + + + + + + + + + + + + + + + + + + + + diff --git a/video_rip.sh b/video_rip.sh index 1646944..6c1e8c7 100755 --- a/video_rip.sh +++ b/video_rip.sh @@ -17,14 +17,14 @@ VIDEO_TYPE=$3 DEST="${RAWPATH}/${VIDEO_TITLE}_${TIMESTAMP}" RIPSTART=$(date +%s); - mkdir "$DEST" + mkdir -p "$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"/ + makemkvcon "$MKV_ARGS" 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" @@ -33,7 +33,7 @@ VIDEO_TYPE=$3 echo "DEST is ${DEST}" else echo "Using mkv method of ripping." >> "$LOG" - makemkvcon mkv dev:"$DEVNAME" all "$DEST" --minlength="$MINLENGTH" -r + makemkvcon "$MKV_ARGS" mkv dev:"$DEVNAME" all "$DEST" --minlength="$MINLENGTH" -r eject "$DEVNAME" fi diff --git a/video_transcode.sh b/video_transcode.sh index a361964..712ed22 100755 --- a/video_transcode.sh +++ b/video_transcode.sh @@ -29,7 +29,7 @@ TIMESTAMP=$5 fi # DEST="${ARMPATH}/${LABEL}_${TIMESTAMP}" - mkdir "$DEST" + mkdir -p "$DEST" if [ "$SKIP_TRANSCODE" = true ] && [ "$RIPMETHOD" = "mkv" ]; then # this only works for files ripped by MakeMKV into .mkv files echo "Skipping transcode. Moving files from $SRC to $DEST" >> "$LOG" @@ -120,6 +120,12 @@ TIMESTAMP=$5 if [ ! -f "$MEDIA_DIR/$LABEL.$DEST_EXT" ]; then 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" + + if [ "$SET_MEDIA_PERMISSIONS" = true ]; then + + chmod -R "$CHMOD_VALUE" "$MEDIA_DIR" + + fi if [ "$EMBY_REFRESH" = true ]; then # signal emby to scan library @@ -134,10 +140,16 @@ TIMESTAMP=$5 # shellcheck disable=SC2129,SC2016 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" - mkdir "$MEDIA_DIR/$LABEL" >> "$LOG" + mkdir -p "$MEDIA_DIR/$LABEL" >> "$LOG" 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" 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 # signal emby to scan library @@ -155,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 "Moving multiple files to emby movie folder" >> "$LOG" 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 # signal emby to scan library embyrefresh @@ -166,23 +185,70 @@ TIMESTAMP=$5 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 "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 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" + + if [ "$SET_MEDIA_PERMISSIONS" = true ]; then + + chmod -R "$CHMOD_VALUE" "$MEDIA_DIR/$LABEL" + + fi + fi #now move "extras" - # shellcheck disable=SC2129,SC2016 - mkdir -v "$MEDIA_DIR/$LABEL/extras" >> "$LOG" - # shellcheck disable=SC2086 - echo "Sending command: mv -n "\"$DEST/$LABEL/*\"" "\"$MEDIA_DIR/$LABEL/extras/\""" >> "$LOG" - mv -n "${DEST}"/* "$MEDIA_DIR/$LABEL/extras/" >> "$LOG" - if [ "$EMBY_REFRESH" = true ]; then - # signal emby to scan library - embyrefresh + if [ "$PLEX_SUPPORT" = true ]; then + + # shellcheck disable=SC2129,SC2016 + mkdir -p -v "$MEDIA_DIR/$LABEL/Featurettes" >> "$LOG" + + # Create Emby ignore file for "extras" Folder + touch "$MEDIA_DIR/$LABEL/Featurettes/.ignore" >> "$LOG" + + # 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 - 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 rmdir "$DEST" fi