diff --git a/lidarr/PlexNotify.bash b/lidarr/PlexNotify.bash index 7b47028e..7b487fbf 100644 --- a/lidarr/PlexNotify.bash +++ b/lidarr/PlexNotify.bash @@ -33,8 +33,8 @@ plexConnectionError () { } # Validate connection -if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then - plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . | jq -r '.MediaContainer."@version"') +if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq &>/dev/null; then + plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq -x //MediaContainer/@version) if [ "$plexVersion" == "null" ]; then # Error out if version is null, indicates bad token plexConnectionError @@ -42,17 +42,17 @@ if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then log "Plex Connection Established, version: $plexVersion" fi else - # Error out if error in curl | xq . command output + # Error out if error in curl | xq command output plexConnectionError fi plexLibraries="$(curl -s "$plexUrl/library/sections?X-Plex-Token=$plexToken")" -if echo "$plexLibraries" | xq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" &>/dev/null; then - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) - plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")") -elif echo "$plexLibraries" | xq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" &>/dev/null; then - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) - plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")") +if echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" &>/dev/null; then + plexKeys=($(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) + plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")") +elif echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" &>/dev/null; then + plexKeys=($(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) + plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")") else log "ERROR: No Plex Music Type libraries found" log "ERROR: Exiting..." diff --git a/radarr/Extras.bash b/radarr/Extras.bash index 07a02d7b..05aaf09d 100644 --- a/radarr/Extras.bash +++ b/radarr/Extras.bash @@ -34,14 +34,14 @@ fi if [ -z "$arrUrl" ] || [ -z "$arrApiKey" ]; then - arrUrlBase="$(cat /config/config.xml | xq | jq -r .Config.UrlBase)" + arrUrlBase="$(cat /config/config.xml | xq -x //Config/UrlBase)" if [ "$arrUrlBase" == "null" ]; then arrUrlBase="" else arrUrlBase="/$(echo "$arrUrlBase" | sed "s/\///g")" fi - arrApiKey="$(cat /config/config.xml | xq | jq -r .Config.ApiKey)" - arrPort="$(cat /config/config.xml | xq | jq -r .Config.Port)" + arrApiKey="$(cat /config/config.xml | xq -x //Config/ApiKey)" + arrPort="$(cat /config/config.xml | xq -x //Config/Port)" arrUrl="http://127.0.0.1:${arrPort}${arrUrlBase}" fi diff --git a/radarr/PlexNotify.bash b/radarr/PlexNotify.bash index 34ef90fc..c18ea32d 100644 --- a/radarr/PlexNotify.bash +++ b/radarr/PlexNotify.bash @@ -57,8 +57,8 @@ PlexConnectionError () { } # Validate connection -if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then - plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . | jq -r '.MediaContainer."@version"') +if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq &>/dev/null; then + plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq -x //MediaContainer/@version) if [ "$plexVersion" == "null" ]; then # Error out if version is null, indicates bad token PlexConnectionError @@ -66,17 +66,17 @@ if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then log "Plex Connection Established, version: $plexVersion" fi else - # Error out if error in curl | xq . command output + # Error out if error in curl | xq command output PlexConnectionError fi plexLibraries="$(curl -s "$plexUrl/library/sections?X-Plex-Token=$plexToken")" -plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory") +plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory") if echo "$plexLibraryData" | grep "^\[" | read; then - plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory[]") - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory[]" | jq -r '."@key"')) + plexLibraryData=$(echo "$plexLibraries" | jq ".MediaContainer.Directory[]") + plexKeys=($(echo "$plexLibraries" | jq ".MediaContainer.Directory[]" | jq -r '."@key"')) else - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory" | jq -r '."@key"')) + plexKeys=($(echo "$plexLibraries" | jq ".MediaContainer.Directory" | jq -r '."@key"')) fi if echo "$plexLibraryData" | grep "\"@path\": \"$arrRootFolderPath" | read; then diff --git a/readarr/PlexNotify.bash b/readarr/PlexNotify.bash index 995d4f85..a57d475d 100644 --- a/readarr/PlexNotify.bash +++ b/readarr/PlexNotify.bash @@ -33,8 +33,8 @@ plexConnectionError () { } # Validate connection -if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then - plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . | jq -r '.MediaContainer."@version"') +if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq &>/dev/null; then + plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq -x //MediaContainer//@version) if [ "$plexVersion" == "null" ]; then # Error out if version is null, indicates bad token plexConnectionError @@ -42,17 +42,17 @@ if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then log "Plex Connection Established, version: $plexVersion" fi else - # Error out if error in curl | xq . command output + # Error out if error in curl | xq command output plexConnectionError fi plexLibraries="$(curl -s "$plexUrl/library/sections?X-Plex-Token=$plexToken")" -if echo "$plexLibraries" | xq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" &>/dev/null; then - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) - plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")") -elif echo "$plexLibraries" | xq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" &>/dev/null; then - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) - plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")") +if echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" &>/dev/null; then + plexKeys=($(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) + plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory | select(.\"@type\"==\"artist\")") +elif echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" &>/dev/null; then + plexKeys=($(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")" | jq -r '."@key"')) + plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[] | select(.\"@type\"==\"artist\")") else log "ERROR: No Plex Music Type libraries found" log "ERROR: Exiting..." diff --git a/sonarr/PlexNotify.bash b/sonarr/PlexNotify.bash index 10aedf76..a585c34d 100644 --- a/sonarr/PlexNotify.bash +++ b/sonarr/PlexNotify.bash @@ -57,8 +57,8 @@ plexConnectionError () { } # Validate connection -if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then - plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . | jq -r '.MediaContainer."@version"') +if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq &>/dev/null; then + plexVersion=$(curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq -x //MediaContainer/@version) if [ "$plexVersion" == "null" ]; then # Error out if version is null, indicates bad token plexConnectionError @@ -66,17 +66,17 @@ if curl -s "$plexUrl/?X-Plex-Token=$plexToken" | xq . &>/dev/null; then log "Plex Connection Established, version: $plexVersion" fi else - # Error out if error in curl | xq . command output + # Error out if error in curl | xq command output plexConnectionError fi plexLibraries="$(curl -s "$plexUrl/library/sections?X-Plex-Token=$plexToken")" -plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory") +plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory") if echo "$plexLibraryData" | grep "^\[" | read; then - plexLibraryData=$(echo "$plexLibraries" | xq ".MediaContainer.Directory[]") - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory[]" | jq -r '."@key"')) + plexLibraryData=$(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[]") + plexKeys=($(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory[]" | jq -r '."@key"')) else - plexKeys=($(echo "$plexLibraries" | xq ".MediaContainer.Directory" | jq -r '."@key"')) + plexKeys=($(echo "$plexLibraries" | xq -j | jq ".MediaContainer.Directory" | jq -r '."@key"')) fi if echo "$plexLibraryData" | grep "path" | grep "$arrRootFolderPath" | read; then diff --git a/universal/functions.bash b/universal/functions.bash index ed3df173..d9c9e773 100644 --- a/universal/functions.bash +++ b/universal/functions.bash @@ -19,41 +19,41 @@ logfileSetup () { } getArrAppInfo () { - # Get Arr App information if [ -z "$arrUrl" ] || [ -z "$arrApiKey" ]; then - arrUrlBase="$(cat /config/config.xml | xq | jq -r .Config.UrlBase)" - if [ "$arrUrlBase" == "null" ]; then + arrUrlBase="$(xq -x //Config/UrlBase < /config/config.xml)" + arrName="$(xq -x //Config/InstanceName < /config/config.xml)" + arrApiKey="$(xq -x //Config/ApiKey < /config/config.xml)" + arrPort="$(xq -x //Config/Port < /config/config.xml)" + if [ "$arrUrlBase" == "null" ] || [ -z "$arrUrlBase" ] || [ "$arrUrlBase" == "/" ]; then arrUrlBase="" else - arrUrlBase="/$(echo "$arrUrlBase" | sed "s/\///")" + arrUrlBase=$(echo "$arrUrlBase" | sed -e 's/^\/*//' -e 's/\/*$//') + arrUrlBase="/$arrUrlBase" fi - arrName="$(cat /config/config.xml | xq | jq -r .Config.InstanceName)" - arrApiKey="$(cat /config/config.xml | xq | jq -r .Config.ApiKey)" - arrPort="$(cat /config/config.xml | xq | jq -r .Config.Port)" arrUrl="http://127.0.0.1:${arrPort}${arrUrlBase}" fi + arrUrl="${arrUrl%/}" } verifyApiAccess () { + if ! command -v curl >/dev/null 2>&1 || ! command -v jq >/dev/null 2>&1; then + log "Fatal: 'curl' or 'jq' is not installed." + return 1 + fi until false do arrApiTest="" - arrApiVersion="" - if [ -z "$arrApiTest" ]; then - arrApiVersion="v3" - arrApiTest="$(curl -s "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" | jq -r .instanceName)" - fi - if [ -z "$arrApiTest" ]; then - arrApiVersion="v1" - arrApiTest="$(curl -s "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" | jq -r .instanceName)" - fi - if [ ! -z "$arrApiTest" ]; then - break - else - log "$arrName is not ready, sleeping until valid response..." - sleep 1 - fi + for arrApiVersion in "v3" "v1"; do + echo "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" + arrApiTest="$(curl -s "$arrUrl/api/$arrApiVersion/system/status?apikey=$arrApiKey" | jq -r '.instanceName // empty' 2>/dev/null)" + if [ -n "$arrApiTest" ]; then + break 2 + fi + done + log "$arrName is not ready, sleeping until valid response..." + sleep 1 done + log "$arrName ($arrApiTest) is ready!" } ConfValidationCheck () {