Update plex_update.sh script for docker setup

This commit is contained in:
Ben Sarmiento
2024-03-03 00:10:41 +01:00
parent b7e6f75f82
commit 1fd2abc604

View File

@@ -1,45 +1,44 @@
#!/bin/bash
# PLEX PARTIAL SCAN script or PLEX UPDATE script
# PLEX PARTIAL SCAN script or PLEX UPDATE script (Docker)
# When zurg detects changes, it can trigger this script IF your config.yml contains
# on_library_update: sh plex_update.sh "$@"
# this uses python3
# docker compose exec zurg apk add python3
# sudo apt install python3
plex_url="http://plex:32400" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400
plexip=$(/sbin/ip route|awk '/default/ { print $3 }')
plex_url="http://$plexip:32400" # If you're using zurg inside a Docker container, by default it is 172.17.0.1:32400
echo "Detected Plex URL inside Docker container: $plex_url"
token="yourplextoken" # open Plex in a browser, open dev console and copy-paste this: window.localStorage.getItem("myPlexAccessToken")
zurg_mount="/mnt/zurg" # replace with your zurg mount path, ensure this is what Plex sees
# Get the list of section IDs
section_ids=$(curl -sLX GET "$plex_url/library/sections" -H "X-Plex-Token: $token" | xmllint --xpath "//Directory/@key" - | sed 's/key="//g' | tr '"' '\n')
section_ids=$(curl -sLX GET "$plex_url/library/sections" -H "X-Plex-Token: $token" | xmllint --xpath "//Directory/@key" - | grep -o 'key="[^"]*"' | awk -F'"' '{print $2}')
if [ -z "$section_ids" ]; then
echo "Error: missing sections; the token seems to be broken"
fi
echo "Plex section IDs: $section_ids"
sleep 1
for arg in "$@"
do
modified_arg="$zurg_mount/$arg"
echo "Detected update on: $arg"
echo "Absolute path: $modified_arg"
echo "Updating in Plex: $modified_arg"
encoded_arg=$(echo -n "$modified_arg" | python3 -c "import sys, urllib.parse as ul; print (ul.quote_plus(sys.stdin.read()))")
if [ -z "$encoded_arg" ]; then
echo "Error: Encoded argument is empty. Check the input or encoding process."
echo "Error: encoded argument is empty, check the input or encoding process"
continue
fi
for section_id in $section_ids
do
final_url="${plex_url}/library/sections/${section_id}/refresh?path=${encoded_arg}&X-Plex-Token=${token}"
echo "Encoded argument: $encoded_arg"
echo "Section ID: $section_id"
echo "Final URL: $final_url"
curl -s "$final_url"
echo "Triggered scan with URL: $final_url"
done
done
echo "All updated sections refreshed"
echo "All updated sections refreshed!"
# credits to godver3