plex-tools/plex-do
deathbybandaid 15fb5200c3 test
2023-03-14 08:44:15 -04:00

57 lines
2.3 KiB
Bash

#!/bin/sh
# automatic maintenance of PLEX
# will, optimize the database, Update the library, and empty the trash
# all the commands will work via curl over localhost
# please make sure that jq is installed
# check to see if I'm root
# you can run this script as non root use as long as its ran as the same user that plex runs so that its able to read the Preferences.xml file
#if ! [ $(id -u) = 0 ]; then
# echo "Please run as root user"
# exit 1
#fi
# configs
PREF="/opt/plex/Library/Application Support/Plex Media Server/Preferences.xml"
# get token
TOKEN=`cat "${PREF}" | sed -e 's;^.* PlexOnlineToken=";;' | sed -e 's;".*$;;' | tail -1`
# print token for troubleshooting
# uncomment to put your token in the logs if you want to know what it is.
logger "[DEBUG PLEX] TOKEN: $TOKEN"
echo "[DEBUG PLEX] TOKEN: $TOKEN"
# optimize database
logger "[DEBUG PLEX] optimizing library"
echo "[DEBUG PLEX] optimizing library"
## curl -X PUT -H "X-Plex-Token: ${TOKEN}" http://127.0.0.1:32400/library/optimize\?async=1&X-Plex-Token=${TOKEN}
curl -X PUT http://127.0.0.1:32400/library/optimize\?async=1\&X-Plex-Token=${TOKEN}
# adding 120 sec sleep for things to settle
sleep 120
# run a loop against each library
for i in `curl -s -H "Accept: application/json" -H "X-Plex-Token: ${TOKEN}" http://127.0.0.1:32400/library/sections | jq -M -r '.MediaContainer.Directory[] | "\(.key)"'`
do
logger "[DEBUG PLEX] Running Update for key: ${i}"
echo "[DEBUG PLEX] Running Update for key: ${i}"
# OLD way
# curl -X PUT -H "X-Plex-Token: ${TOKEN}" http://127.0.0.1:32400/library/sections/${i}/refresh\?force=1&X-Plex-Token=${TOKEN}
# NEW way
curl -X PUT http://127.0.0.1:32400/library/sections/${i}/refresh\?force=1\&X-Plex-Token=${TOKEN}
# adding 30 sec sleep
sleep 30
# curl -X PUT -H "X-Plex-Token: ${TOKEN}" http://127.0.0.1:32400/library/sections/${i}/emptyTrash?X-Plex-Token=${TOKEN}
logger "[DEBUG PLEX] Emptying Trash for key: ${i}"
echo "[DEBUG PLEX] Emptying Trash for key: ${i}"
curl -X PUT http://127.0.0.1:32400/library/sections/${i}/emptyTrash\?X-Plex-Token=${TOKEN}
done
# clean PhotoTranscoder Cache
logger "[DEBUG PLEX] Deleting PhotoTranscoder Cache"
echo "[DEBUG PLEX] Deleting PhotoTranscoder Cache"
CACHEPATH="/opt/plex/Library/Application Support/Plex Media Server/Cache/PhotoTranscoder"
find "${CACHEPATH}" -type f -delete