From 1fd2abc6042e7620c6b21ab524a755b63fe99b5b Mon Sep 17 00:00:00 2001 From: Ben Sarmiento Date: Sun, 3 Mar 2024 00:10:41 +0100 Subject: [PATCH] Update plex_update.sh script for docker setup --- plex_update.sh | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/plex_update.sh b/plex_update.sh index cf76f7d..3c21f83 100755 --- a/plex_update.sh +++ b/plex_update.sh @@ -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