plex-tools/untested scripts/plex-scan-new.sh
deathbybandaid a0de5d88a2 test
2024-02-21 11:19:26 -05:00

80 lines
3.2 KiB
Bash

#!/bin/bash
## PLEX SCAN ONLY NEW/MODIFED FOLDERS SINCE LAST RUN
## OS: Linux Ubuntu 16.04
## Make script executable by chmod a+x plex-scan-new.sh
## Add script to crontab -e ( paste the line bellow without ## )
## */30 * * * * /path to script/plex-scan-new.sh >/dev/null 2>&1
## Make sure you disable all Plex automatic & scheduled library scans.
if pidof -o %PPID -x "$0"; then
echo "$(date "+%d.%m.%Y %T") Exit, already running."
exit 1
fi
#SETTINGS
MOVIELIBRARY="/mnt/cloud/movies/"
MOVIESECTION=2
TVLIBRARY="/mnt/cloud/series/"
TVSECTION=1
LOGFILE="/home/plex/logs/plex-scan-new.log"
FOLDERLISTFILE="/home/plex/.cache/folderlistfile"
LASTRUNFILE="/home/plex/.cache/lastrunfile"
export LD_LIBRARY_PATH=/usr/lib/plexmediaserver
export PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR=/var/lib/plexmediaserver/Library/Application\ Support
if [[ ! -f "$LASTRUNFILE" ]]; then
touch $LASTRUNFILE
fi
echo "$(date "+%d.%m.%Y %T") PLEX SCAN FOR NEW/MODIFIED FILES AFTER: $(date -r $LASTRUNFILE)"
if [[ -f "$FOLDERLISTFILE" ]]; then
echo "Removing previous folder list"
rm $FOLDERLISTFILE
fi
start=$(date +'%s')
startmovies=$(date +'%s')
echo "Scaning for new files: $MOVIELIBRARY"
find "$MOVIELIBRARY" -mindepth 1 -type f -cnewer $LASTRUNFILE |
while read mfile; do
echo "$(date "+%d.%m.%Y %T") New file detected: $mfile" | tee -a "$LOGFILE"
MFOLDER=$(dirname "${mfile}")
echo "$MFOLDER" | tee -a "$FOLDERLISTFILE"
done
echo "$(date "+%d.%m.%Y %T") Movie files scanned in $(($(date +'%s') - $startmovies)) seconds" | tee -a "$LOGFILE"
startseries=$(date +'%s')
echo "Scaning for new files: $TVLIBRARY"
find "$TVLIBRARY" -mindepth 2 -type f -cnewer $LASTRUNFILE |
while read tvfile; do
echo "$(date "+%d.%m.%Y %T") New file detected: $tvfile" | tee -a "$LOGFILE"
TVFOLDER=$(dirname "${tvfile}")
echo "$TVFOLDER" | tee -a "$FOLDERLISTFILE"
done
echo "$(date "+%d.%m.%Y %T") TV folders scanned in $(($(date +'%s') - $startseries)) seconds" | tee -a "$LOGFILE"
echo "$(date "+%d.%m.%Y %T") Move & TV folders scanned in $(($(date +'%s') - $start)) seconds" | tee -a "$LOGFILE"
echo "$(date "+%d.%m.%Y %T") Setting lastrun for next folder scans" | tee -a "$LOGFILE"
touch $LASTRUNFILE
echo "$(date "+%d.%m.%Y %T") Remove duplicates" | tee -a "$LOGFILE"
sort "$FOLDERLISTFILE" | uniq | tee "$FOLDERLISTFILE"
startplexscan=$(date +'%s')
echo "$(date "+%d.%m.%Y %T") Plex scan started" | tee -a "$LOGFILE"
readarray -t FOLDERS < "$FOLDERLISTFILE"
for FOLDER in "${FOLDERS[@]}"
do
if [[ $FOLDER == "$MOVIELIBRARY"* ]]; then
echo "$(date "+%d.%m.%Y %T") Plex scan movie folder:: $FOLDER" | tee -a "$LOGFILE"
$LD_LIBRARY_PATH/Plex\ Media\ Scanner --scan --refresh --section "$MOVIESECTION" --directory "$FOLDER" | tee -a "$LOGFILE"
elif [[ $FOLDER == "$TVLIBRARY"* ]]; then
echo "$(date "+%d.%m.%Y %T") Plex scan TV folder: $FOLDER" | tee -a "$LOGFILE"
$LD_LIBRARY_PATH/Plex\ Media\ Scanner --scan --refresh --section "$TVSECTION" --directory "$FOLDER" | tee -a "$LOGFILE"
fi
done
echo "$(date "+%d.%m.%Y %T") Plex scan finished in $(($(date +'%s') - $startplexscan)) seconds" | tee -a "$LOGFILE"
echo "$(date "+%d.%m.%Y %T") Scan completed in $(($(date +'%s') - $start)) seconds" | tee -a "$LOGFILE"
exit